html 树形结构_java最优化的方法递归构造树形结构

3dc87dee7f2c79d9b9741c2feed4920d.png

java最优化的方法递归构造树形结构

简介

    树形结构的前台页面展示在我们项目中很常用,所以小编整理了树形结构写法,目的不在于讲解内容在于可以方便大家拿到代码里面可以直接使用。做权限管理的时候经常会用到tree控件,以前前台用 jquery的时候用ztree,后来用easyui的时候框架自带了树形控件,最近在整理element ui的使用所以小编总结了element ui的树形结构的使用方法,接下来介绍的是element ui+spring boot递归构造树形结构,希望能够帮助大家,下面废话就不多说了,开始搞代码。

01

首先和大家看一下运行后的效果

b386ed5c275ff5fdd6f9af53a31d6a7c.gif 6853669ebab5f274f1a87350fc013cd9.png

02

element ui中el-tree的写法

a9a58eda4acf5ffa3c7f0ebe8ebd4a03.png                    

el-tree是element uI的中树形结构的写法,主要使用的场景是在需要父级和子级的情况下使用,下面看一下前台的写法。

aed70f1f007d0733031a5df975e897f8.png 2541d68770a5f13b6ddc27268e18e50e.png

HTML的代码

 :data="sysMenuTreeData"  show-checkbox default-expand-all node-key="menuId"  ref="tree" highlight-current :default-checked-keys='defaultExpandedKeys'  :props="defaultProps" @node-click="handleNodeClick"></el-tree>
4a1de2b86ff8619d5f785063e542bf4f.png

JS的代码

request({  url:'/sys/SysMenu/geButtonTreeData',  method: 'POST',  data: {}}).then((res) => {  debugger  if (res.data != null) {    this.sysMenuTreeData = res.data;  } else {    this.sysMenuTreeData = "";  }}).catch((response) => {  this.sysMenuTreeData="";});

03

spring boot后台

a9a58eda4acf5ffa3c7f0ebe8ebd4a03.png

java后台递归构造树形结构,其实很简单,设计表结构的时候定义父级字段和子级字段,然后定义一个树形结构的实体,比如treeDto,建立实体的父子级关系。然后把数据按照父子级关系循环递归就可以了。

aed70f1f007d0733031a5df975e897f8.png 2541d68770a5f13b6ddc27268e18e50e.png

首先定义一个实体dto

public class SysMenuTreeOutVo extends SysMenu {    private String id;    private String value;    private String label;    private List children;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getLabel() {        return label;    }    public void setLabel(String label) {        this.label = label;    }    public ListgetChildren() {        return children;    }    public void setChildren(List children) {        this.children = children;    }    public String getValue() {        return value;    }    public void setValue(String value) {        this.value = value;    }
2541d68770a5f13b6ddc27268e18e50e.png

下面是controller的代码重点来了,循环递归数据

/** * 获取菜单数据 * @return */@RequestMapping(value = "/getMenuTree", method = {RequestMethod.GET, RequestMethod.POST})@ResponseBodypublic ResultInfo getSysRole() {    List sysMenuList = this.sysMenuService.getSysMenuTree();    List resultList = new ArrayList();    // 把数据组织成树    SysMenu sysMenu = new SysMenu();    sysMenu.setMenuId("");    resultList = this.listToTree(sysMenu, sysMenuList);    // 定义传参    ResultInfo result = new ResultInfo();    result.setData(resultList);    return result;}/** * 构造树形菜单 * @param parmData 父级 * @param list 子级数据 * @return */private List listToTree(SysMenu parmData, Listlist) {    List childData = new ArrayList();    for (SysMenuTreeOutVo data : list) {        if ((parmData.getMenuId() == null && data.getParentId() == null) ||                data.getParentId() != null && data.getParentId().equals(parmData.getMenuId())        ) {            childData.add(data);        }    }    List resultList = new ArrayList();    for (SysMenuTreeOutVo item : childData) {        item.setId(item.getMenuId());        item.setValue(item.getMenuId());        item.setLabel(item.getMenuName());        item.setChildren(this.listToTree(item, list));        resultList.add(item);    }    return resultList;}

    java的树形递归结构基本上是这么实现,主要的内容在于后台给前台数据的整理,只要后台整理成前台需要的json数据,前台自动加载树形结构。后续我会分享更多的技术相关的内容,请大家多多关注。

59631780b70928960f4d25105008f578.gif

扫码关注我们

fb1feca911f299ac487dfbbc1af0b62e.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值