我想通過使用記錄使UL LI嵌套樹。記錄來自數據庫表。這是我桌子的快照。 有序列表UL LI從MYSQL java嵌套樹
而我想獲得這些記錄在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;
}
And運算功能
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;
}
和遞歸函數
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員工Cla ss
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;
}
}
這是我試圖讓它遞歸,但是當我運行這段代碼時,它給了我堆棧溢出錯誤。我認爲這是無限的時間。
請幫助我在這裏需要關於這個項目的幫助。
夥計們感謝您的幫助。我修改了遞歸條件,現在它正在工作。非常感謝@Aitor。 – user2777070
@ user2777070我很高興聽到這個消息。如果您發現我的答案有用,請注意。如果這是正確的答案,請將其標記爲正確的答案。問候 – Aitor