上一篇使用layui的tree完善

1、在上一篇中使用layui的tree,不灵活,它只对一个父节点起作用,加入想要多个父节点呢?在后端查询出来的是null的或者是没有数据,但是数据库中有含有数据,原因只是后端写的太了,不灵活。把它修改掉,保持原来的效果不变,改后端代码
2、改动前的效果:图:
在未加入的父节点,一切正常:
在这里插入图片描述
在这里插入图片描述
加入后的:
在这里插入图片描述
在这里插入图片描述
只查询最后一个节点!

3.对后端代码修改:上代码!
需要两个个工具类;一个是TypeNode ;一个是TypeTreeUtil

TypeNode:跟原来实体类一样
TypeTreeUtil:对节点拼接,有层级关系
TypeNode代码:提供get和set方法
TypeNode是为了不破坏原来的实体类,才创建出多一个,

public class TypeNode {
	private Integer id;
	private Integer pid;
	private String title;
	private Boolean spread = true; // 是否展开
	private List<TypeNode> children;
}

TypeTreeUtil代码:

public class TypeTreeUtil {
    /***
     * 构建菜单层级
     * @param treeList   //菜单列表
     * @param pid     //父级菜单编号
     * @return
     */
    public static List<TypeNode> toTree(List<TypeNode> treeList, Integer pid) {
        List<TypeNode> retList = new ArrayList<TypeNode>();
        for (TypeNode parent : treeList) {
            if (pid == parent.getPid()) {
                retList.add(findChildren(parent, treeList));
            }
        }
        return retList;
    }
    private static TypeNode findChildren(TypeNode parent, List<TypeNode> treeList) {
        for (TypeNode child : treeList) {
            if (parent.getId() == child.getPid()) {
                if (parent.getChildren() == null) {
                    parent.setChildren(new ArrayList<>());
                }
                parent.getChildren().add(findChildren(child, treeList));
            }
        }
        return parent;
    }
}

4.Controller方法,其他service ,Impl,mapper,都是一样,查询全部数据

public Object typeList(){
        //创建map集合,保存菜单信息
        Map<String,Object> map = new ListHashMap<String,Object>();
        List<SYS_Typeof> List = typeService.findByTypeList();
        //创建集合,保存菜单关系
        List<TypeNode> list =new ArrayList<>();
        for(SYS_Typeof ty:List){
            TypeNode t1 = new TypeNode();
            t1.setId(ty.getId());
            t1.setPid(ty.getPid());
            t1.setTitle(ty.getTitle());

            list.add(t1);
        }
        map.put("data", TypeTreeUtil.toTree(list,null));
        return JSON.toJSONString(map);
    }

5.JSP数据返回
在这里插入图片描述
6.效果图
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值