这期内容当中小编将会给大家带来有关利用java怎么构造一个无限层级的树形菜单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联公司 是一家专业提供新乡县企业网站建设 ,专注与成都网站设计 、成都做网站、HTML5建站 、小程序制作等业务。10年已为新乡县众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
1、构造一个实体类,用来存储节点,所以我们构造的需要四个对象(id,pid,name,和chirenList)
2、构造菜单结构
3、构造子菜单,如此循环,通过pid判断上级菜单
具体实现:
1、这里构造Tree.java实体类
package com.tcl.jr.crm.entity;
/**
* 类名称:Tree
* 类描述:树形结构
*/
public class Tree {
private String id;
private String pId;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Tree [id=" + id + ", pId=" + pId + ", name=" + name + "]";
}
} 2、封装树形结构类,这里我封装成一个通用的工具类,方便项目中使用,MenuTreeUtil.java,完整代码如下,可直接复制使用:
package com.tcl.jr.crm.util;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.tcl.jr.crm.entity.Tree;
/**
* 类名称:MenuTreeUtil
* 类描述:递归构造树型结构
*/
public class MenuTreeUtil {
public static Map mapArray = new LinkedHashMap();
public List menuCommon;
public List list = new ArrayList();
public List menuList(List menu){
this.menuCommon = menu;
for (Tree x : menu) {
Map mapArr = new LinkedHashMap();
if(x.getpId()=="0"){
mapArr.put("id", x.getId());
mapArr.put("name", x.getName());
mapArr.put("pid", x.getpId());
mapArr.put("childList", menuChild(x.getId()));
list.add(mapArr);
}
}
return list;
}
public List<?> menuChild(String id){
List lists = new ArrayList();
for(Tree a:menuCommon){
Map childArray = new LinkedHashMap();
if(a.getpId() == id){
childArray.put("id", a.getId());
childArray.put("name", a.getName());
childArray.put("pid", a.getpId());
childArray.put("childList", menuChild(a.getId()));
lists.add(childArray);
}
}
return lists;
}
}3、最后在控制台请求方法调用数据就行了,在controller的方法如下:
/**
* 显示APP树形结构
*/
@RequestMapping(value = { "getAPPTree" }, produces = "text/html;charset=UTF-8")
@ResponseBody
public String getAPPTree(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map returnmap = new HashMap<>();
MenuTreeUtil menuTree = new MenuTreeUtil();
PageData pd = this.getPageData();
try {
//这里的方法是根据前台的机构类型代码来查找数据库数据的,这里不多加解释,因人而异
List list = dataDicService.buildTree(pd.getString("instType"));
List menuList = menuTree.menuList(list);
//区别于web端,这边APP端list不能转为json格式,直接将list传给前台,转成json对象的话vuejs前台无法识别渲染
returnmap.put("list", menuList);
} catch (Exception e) {
logger.error(e.getMessage());
}
return JsonMapper.toJsonString(returnmap);
}4、然后前台ajax调用第三部的接口方法就而已请求到所需的数据,如何渲染成好的前台页面,参照我另一篇文章:vuejs使用递归组件实现树形目录
上述就是小编为大家分享的利用java怎么构造一个无限层级的树形菜单了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
网站标题:利用java怎么构造一个无限层级的树形菜单
网页链接:http://mswzjz.cn/article/gdsoso.html
免费获取网站建设与品牌策划方案报价
*主要业务范围包括:高端网站建设, 集团网站建设(网站建设网站制作)找网站建设公司就上四川攀枝花网站建设。