【分享】巧用JFinal模板函数的递归调用实现无限级树表结构

JBolt极速开发平台里的权限管理、分配、用户角色(多级)的UI上都是树形table展示的,没有使用js组件,直接使用了JFinal模板的递归调用法搞定了。

一、多级角色管理

image.png

后台准备的数据是一个List<Role> 每个role下面有一个items 存放了子角色。

[
    {
        id:1,
        name:"一级角色",
        items:[
                {
                    id:10,
                    name:"二级角色",
                    items:[
                            id:22,
                            name:"3级角色",
                            items:[
                                    id:33,
                                    name:"四级角色"
                                    ]
                          ]
                 }
               ]
     }
]


二、权限资源管理界面

image.png


就这么一个结构,java代码里从数据库或者缓存获取就好了,获取方式也是递归获取,这里就不讲了,很容易。

只要有这么一个结构,放在模板代码里就能遍历出一个树,逐级遍历,递归调用。

模板代码:

image.png


使用define定义的函数,可以在自身里直接递归调用,实现继续遍历下级的需求。



关注JFinal学院公众号(jfinalxueyuan)

 

JFinal学院群:362557641 JFinal学院


加我微信,随时交流:

mumengmeng


image.png


评论区

穿越123

2020-07-29 10:16

如果数据量很大呢

北流家园网

2020-07-29 10:17

能动态切换吗?比如增加了横向菜单,点横向菜单,左边树的功能菜单跟着变

JFinal

2020-07-29 10:33

这个功能好,要注意数据万一出现无限循环的情况,可以引入一个安全变量,限定递归的总次数,就跟 JFinalJson 内的 depth 用法类似

山东小木

2020-07-29 10:40

北流家园网

2020-07-29 11:04

@山东小木 怎么做?贴代码上来学习下

山东小木

2020-07-29 11:41

@北流家园网 js控制 每个导航上都带着横向菜单的key 默认隐藏 横向菜单点谁 谁就拿着自己key去加载或者切换导航显示