我正在尝试通过使用记录来制作 ul li 嵌套树。记录来自数据库表。这是我的桌子的快照。
我正在尝试在 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;
}
}
这就是我试图让它递归的,但是当我运行这段代码时,它给了我堆栈溢出错误。我认为它的运行时间是无限的。
请帮助我在这个项目上需要帮助。