给你一个用三大框架实现的递归树形菜单。参考一下,不懂得地方可以问我、public List<UserMenuTree> syslogin(Purview purview){
List<UserMenuTree> nodes=Lists.newArrayList();
for(Purview parent:purview.getChildren()){
UserMenuTree parentNode=new UserMenuTree();
parentNode.setUrl(parent.getPurUrl());
parentNode.setId(parent.getId());
parentNode.setText(parent.getPurName());
parentNode.setIcon("/ebike/bike/"+parent.getPurIco());
parentNode.setChildren(syslogin(parent));
parentNode.setLeaf(false);
if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
nodes.add(parentNode);
}
return nodes;
}

解决方案 »

  1.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。
      

  2.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。是这样的,1.1.1是3级,输出3。   2.1是2级,输出2。   2.1.1也是3级,输出3。
    1.100.100也都是3级,输出3.
      

  3.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。是这样的,1.1.1是3级,输出3。   2.1是2级,输出2。   2.1.1也是3级,输出3。
    1.100.100也都是3级,输出3.
    if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
    说明还有没有子节点,你声明变量a,每次进来循环就+1,当没有子节点的时候,输出a。这不就得到你要的级别了?
      

  4.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。是这样的,1.1.1是3级,输出3。   2.1是2级,输出2。   2.1.1也是3级,输出3。
    1.100.100也都是3级,输出3.
    if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
    说明还有没有子节点,你声明变量a,每次进来循环就+1,当没有子节点的时候,输出a。这不就得到你要的级别了?那如果循环到1.1.1.1的时候级别是4,再循环1.2的时候级别就是2了,你变量a要如何处理?
      

  5.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。是这样的,1.1.1是3级,输出3。   2.1是2级,输出2。   2.1.1也是3级,输出3。
    1.100.100也都是3级,输出3.
    if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
    说明还有没有子节点,你声明变量a,每次进来循环就+1,当没有子节点的时候,输出a。这不就得到你要的级别了?那如果循环到1.1.1.1的时候级别是4,再循环1.2的时候级别就是2了,你变量a要如何处理?
    显示一个4  一个2   
      

  6.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。是这样的,1.1.1是3级,输出3。   2.1是2级,输出2。   2.1.1也是3级,输出3。
    1.100.100也都是3级,输出3.
    if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
    说明还有没有子节点,你声明变量a,每次进来循环就+1,当没有子节点的时候,输出a。这不就得到你要的级别了?那如果循环到1.1.1.1的时候级别是4,再循环1.2的时候级别就是2了,你变量a要如何处理?
    显示一个4  一个2   
    可用用数组,或者list。如果传到前台使用还要带标记,就用节点的名字或id做标记 list首选。
      

  7.   


    我要的是级别。
    parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。是这样的,1.1.1是3级,输出3。   2.1是2级,输出2。   2.1.1也是3级,输出3。
    1.100.100也都是3级,输出3.
    if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
    说明还有没有子节点,你声明变量a,每次进来循环就+1,当没有子节点的时候,输出a。这不就得到你要的级别了?那如果循环到1.1.1.1的时候级别是4,再循环1.2的时候级别就是2了,你变量a要如何处理?
    显示一个4  一个2   
    可用用数组,或者list。如果传到前台使用还要带标记,就用节点的名字或id做标记 list首选。关键是不知道怎么写。
      

  8.   

    树形菜单,有个必要的因素就是parent node父节点,除非你这个是有规律的。这种问题你是要做权限管理方面的东西吗?这个在建表的时候给tab_menu加个parent_id字段来记录父节点,然后循环查询。