繁体   English   中英

MYSQL中Java中的有序列表ul li嵌套树

[英]ordered list ul li nested tree in java from MYSQL

我正在尝试通过使用记录来制作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;
    }

}

这就是我试图使其递归的原因,但是当我运行此代码时,它给了我堆栈溢出错误。 我认为它运行的时间是无限的。

请帮助我在此项目上需要帮助。

在您的JSP文件示例中。 你用过

 <%
     String x=empTree.Operator();
     System.out.println(x);

 %>

在这里, System.out.println(x); 在控制台上而不是在JSP页面中显示结果。 使用out.println(x)在JSP页面中显示结果。

好吧,我认为您的递归函数永远不会结束。

尝试在每次递归调用时传递的列表少一个元素。

列出newList = Categories.subList(0,categories.size()-1);

子= recursiveTree( newList ,categories.get(i).getParentId());

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>";
                    **List newList = categories.subList(0,categories.size() -1);**
                    sub = recursiveTree(**newList** ,categories.get(i).getParentId());
                    if(sub != "<ul></ul>")
                        ret += sub;
                    ret += "</li>";
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }   

        return ret+"</ul>";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM