レコードを使用して ul li ネストされたツリーを作成しようとしています。レコードは DB テーブルから取得されます。これが私のテーブルのスナップショットです。
そして、これらのレコードをJavaで取得しようとしていて、htmlページに表示したいと考えています。このために、私は JSP ページを使用しています。これが私のJSPページのサンプルです
<ul id="org" style="display:none">
<li><a href="#" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-inline ui-btn-hover-e ui-btn-up-e"><span class="ui-btn-inner"><span class="ui-btn-text" style="font-size:10px;">3214657890<br/>Root<br/>SAP<br/>SSE</span></span></a>
<ul id="main_child_ul" class="children">
<%
String x=empTree.Operator();
System.out.println(x);
%>
</ul>
</li>
</ul>
そして、ここに私のJAVA関数があります
public ResultSet getSavedTree() throws SQLException{
ResultSet rs = null;
try {
s = ds.createStatement();
rs = s.executeQuery("SELECT * FROM pep.employee_tree order by reporting_to;");
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
そして演算子機能
public String Operator()
{
String x="";
try {
ArrayList<EmployeeJSONObj> arraylist = new ArrayList<EmployeeJSONObj>();
ResultSet SavedEmployeesTree = getSavedTree();
while(SavedEmployeesTree.next())
{
EmployeeJSONObj emp = new EmployeeJSONObj();
emp.setName(SavedEmployeesTree.getString("sap_code"));
emp.setParentId(SavedEmployeesTree.getString("reporting_to"));
arraylist.add(emp);
}
x=recursiveTree(arraylist,"-1");
}catch (Exception e) {
e.printStackTrace();
}
return x;
}
AND 再帰関数
public String recursiveTree(ArrayList<EmployeeJSONObj> categories , String parent)
{
String ret = "<ul>";
String sub ="";
try {
//String xx=categories.getString("sap_code");
for(int i=0;i<categories.size();i++)
{
if(categories.get(i).getParentId().equals(parent))
{
ret += "<li><a href=='#'>"+ categories.get(i).getName() +"</a>";
sub = recursiveTree(categories,categories.get(i).getParentId());
if(sub != "<ul></ul>")
ret += sub;
ret += "</li>";
}
}
}catch (Exception e) {
e.printStackTrace();
}
return ret+"</ul>";
}
そして、これが私のJAVA従業員クラスです
public class EmployeeJSONObj {
private String name;
private String parentID;
private List<EmployeeJSONObj> children = new LinkedList<>();
EmployeeJSONObj()
{
}
public void setName(String n)
{
name=n ;
}
public String getName()
{
return name;
}
public void setParentId(String pid)
{
parentID=pid;
}
public String getParentId()
{
return parentID;
}
public List<EmployeeJSONObj> getChild()
{
return children;
}
public String toString() {
return "name: " + name + ", children = " + children;
}
}
これは再帰的にしようとしたものですが、このコードを実行するとスタックオーバーフローエラーが発生します。時間は無限に流れていると思います。
このプロジェクトについてここで助けが必要です。