tree(树的简介)
树控件在web页面中一个将分层数据以树形结构进行显示。它提供用户展开、折叠、拖拽、编辑和异步加载等功能。
树控件数据格式化
1.每个节点都具备以下属性:
属性 | 释义 |
---|---|
id | 节点ID,对加载远程数据很重要。 |
text | 显示节点文本。 |
state | 节点状态,‘open’ 或 ‘closed’,默认:‘open’。如果为’closed’的时候,将不自动展开该节点。 |
checked | 表示该节点是否被选中。 |
attributes | 被添加到节点的自定义属性。 |
children | 一个节点数组声明了若干节点。 |
2,把每个节点创建为通过性的存储类,设置好指定的格式(Tree生产类)
package com.houzhihong.vo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class TreeVo<T> {
/**
* 节点ID
*/
private String id;
/**
* 显示节点文本
*/
private String text;
/**
* 节点状态,open closed
*/
private Map<String, Object> state;
/**
* 节点是否被选中 true false
*/
private boolean checked = false;
/**
* 节点属性
*/
private Map<String, Object> attributes;
/**
* 节点的子节点
*/
private List<TreeVo<T>> children = new ArrayList<TreeVo<T>>();
/**
* 父ID
*/
private String parentId;
/**
* 是否有父节点
*/
private boolean hasParent = false;
/**
* 是否有子节点
*/
private boolean hasChildren = false;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Map<String, Object> getState() {
return state;
}
public void setState(Map<String, Object> state) {
this.state = state;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public Map<String, Object> getAttributes() {
return attributes;
}
public void setAttributes(Map<String, Object> attributes) {
this.attributes = attributes;
}
public List<TreeVo<T>> getChildren() {
return children;
}
public void setChildren(List<TreeVo<T>> children) {
this.children = children;
}
public boolean isHasParent() {
return hasParent;
}
public void setHasParent(boolean isParent) {
this.hasParent = isParent;
}
public boolean isHasChildren() {
return hasChildren;
}
public void setChildren(boolean isChildren) {
this.hasChildren = isChildren;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public TreeVo(String id, String text, Map<String, Object> state, boolean checked, Map<String, Object> attributes,
List<TreeVo<T>> children, boolean isParent, boolean isChildren, String parentID) {
super();
this.id = id;
this.text = text;
this.state = state;
this.checked = checked;
this.attributes = attributes;
this.children = children;
this.hasParent = isParent;
this.hasChildren = isChildren;
this.parentId = parentID;
}
public TreeVo() {
super();
}
}
3.相当于后台数据库匹配的id ,name ,pid
目标
1、实现通过tree组件来完成左侧菜单栏的展示
2.不使用jsp展示数据(if判断,遍历),可以通过easyUI写好的组件库
3.通过自定义的js,URL转到json格式的文件
4.json在线解析格式化
5.控制台查询出来然后通过在线工具转成json格式
{"id":"000","text":"菜单管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"79D5736B5D2B4427AE5D1DC2D9F3F474","menuid":"000","menuname":"菜单管理","menuURL":null,"parentid":"-1","iconcls":null,"authid":"000","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"004","text":"统一配置","state":null,"checked":false,"attributes":{"self":{"serialNo":"1C63DA57E65243F184D6789A88E137B9","menuid":"004","menuname":"统一配置","menuURL":null,"parentid":"000","iconcls":null,"authid":"004","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"004004","text":"人员管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"269D9A1546E44A438AEA0513DFFA8D86","menuid":"004004","menuname":"人员管理","menuURL":null,"parentid":"004","iconcls":null,"authid":"004004","showflag":"Y","displayno":"1","operatime":"2017-10-29","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"004004001","text":"角色维护","state":null,"checked":false,"attributes":{"self":{"serialNo":"365C214ED29841E0900BA7D0EECEE4FE","menuid":"004004001","menuname":"角色维护","menuURL":"jsp/config/userManage/roleInfo","parentid":"004004","iconcls":null,"authid":"004004001","showflag":"Y","displayno":"1","operatime":"2017-10-29","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004004","hasParent":true,"hasChildren":false},{"id":"004004004","text":"权限信息维护","state":null,"checked":false,"attributes":{"self":{"serialNo":"79D5736B5D2B4427AE5D1DC2D9F3F414","menuid":"004004004","menuname":"权限信息维护","menuURL":"jsp/config/userManage/authInfo","parentid":"004004","iconcls":null,"authid":"004004004","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004004","hasParent":true,"hasChildren":false},{"id":"004004003","text":"人员信息维护","state":null,"checked":false,"attributes":{"self":{"serialNo":"90A28BFD207744428C623182701113BC","menuid":"004004003","menuname":"人员信息维护","menuURL":"jsp/userManage.jsp","parentid":"004004","iconcls":null,"authid":"004004003","showflag":"Y","displayno":"1","operatime":"2017-10-29","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004004","hasParent":true,"hasChildren":false},{"id":"004004002","text":"工作组维护","state":null,"checked":false,"attributes":{"self":{"serialNo":"E51F9D7EDF7648E9A641100A10DD5D67","menuid":"004004002","menuname":"工作组维护","menuURL":"jsp/config/userManage/groupInfo","parentid":"004004","iconcls":null,"authid":"004004002","showflag":"Y","displayno":"1","operatime":"2017-10-29","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004004","hasParent":true,"hasChildren":false}],"parentId":"004","hasParent":true,"hasChildren":true},{"id":"004001","text":"数据字典","state":null,"checked":false,"attributes":{"self":{"serialNo":"49EB2A822E03457498A0A19F9956AE2B","menuid":"004001","menuname":"数据字典","menuURL":"jsp/config/dataDict","parentid":"004","iconcls":null,"authid":"004001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004","hasParent":true,"hasChildren":false},{"id":"004003","text":"权限管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"7B63D97C1B2C4D8896AB3648B065CCD1","menuid":"004003","menuname":"权限管理","menuURL":null,"parentid":"004","iconcls":null,"authid":"004003","showflag":"Y","displayno":"1","operatime":"2017-10-28","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"004003003","text":"用户权限管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"059CB9B033C247A1AD4B3F0E78C0ED55","menuid":"004003003","menuname":"用户权限管理","menuURL":"jsp/userManage.jsp","parentid":"004003","iconcls":null,"authid":"004003003","showflag":"Y","displayno":"1","operatime":"2017-10-28","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004003","hasParent":true,"hasChildren":false},{"id":"004003002","text":"组权限管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"57BC4AB9F93741ACBBD2BDEC71538653","menuid":"004003002","menuname":"组权限管理","menuURL":"jsp/config/groupAuthorityManage","parentid":"004003","iconcls":null,"authid":"004003002","showflag":"Y","displayno":"1","operatime":"2017-10-28","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004003","hasParent":true,"hasChildren":false},{"id":"004003001","text":"角色权限管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"DA05BB54E33845C4922A586B88C48205","menuid":"004003001","menuname":"角色权限管理","menuURL":"jsp/config/roleAuthorityManage","parentid":"004003","iconcls":null,"authid":"004003001","showflag":"Y","displayno":"1","operatime":"2017-10-28","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004003","hasParent":true,"hasChildren":false}],"parentId":"004","hasParent":true,"hasChildren":true},{"id":"004002","text":"系统参数配置","state":null,"checked":false,"attributes":{"self":{"serialNo":"D0D2C27E371B491DB1099E50B2D0A8DA","menuid":"004002","menuname":"系统参数配置","menuURL":"jsp/config/systemParamCfg","parentid":"004","iconcls":null,"authid":"004002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"004","hasParent":true,"hasChildren":false}],"parentId":"000","hasParent":true,"hasChildren":true},{"id":"002","text":"后勤管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"20137C05907C42C7B488F9208E6FDDFE","menuid":"002","menuname":"后勤管理","menuURL":null,"parentid":"000","iconcls":null,"authid":"002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"002004","text":"宿舍日常报销","state":null,"checked":false,"attributes":{"self":{"serialNo":"1F560F60BAFA488B9D95E793226A1CE7","menuid":"002004","menuname":"宿舍日常报销","menuURL":null,"parentid":"002","iconcls":null,"authid":"002004","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"002004002","text":"大件购置","state":null,"checked":false,"attributes":{"self":{"serialNo":"391B22000A874FF7B27298E3B4AC1487","menuid":"002004002","menuname":"大件购置","menuURL":"jsp/support/largeThingInfo","parentid":"002004","iconcls":null,"authid":"002004002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002004","hasParent":true,"hasChildren":false},{"id":"002004001","text":"维修","state":null,"checked":false,"attributes":{"self":{"serialNo":"BC03322D761841F08859350D1C4B0ECA","menuid":"002004001","menuname":"维修","menuURL":"jsp/support/repairInfo","parentid":"002004","iconcls":null,"authid":"002004001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002004","hasParent":true,"hasChildren":false}],"parentId":"002","hasParent":true,"hasChildren":true},{"id":"002001","text":"宿舍管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"85EBB07BE0B349D3B3AD1B50ED546E00","menuid":"002001","menuname":"宿舍管理","menuURL":"jsp/support/roominfo","parentid":"002","iconcls":null,"authid":"002001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002","hasParent":true,"hasChildren":false},{"id":"002005","text":"后勤统计","state":null,"checked":false,"attributes":{"self":{"serialNo":"9C660197D7B44BE584101F286AC4DC8A","menuid":"002005","menuname":"后勤统计","menuURL":"jsp/support/totalInfo","parentid":"002","iconcls":null,"authid":"002005","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002","hasParent":true,"hasChildren":false},{"id":"002002","text":"水电费","state":null,"checked":false,"attributes":{"self":{"serialNo":"C9A01427553848449C76864118A014E6","menuid":"002002","menuname":"水电费","menuURL":"jsp/support/waterElectricity","parentid":"002","iconcls":null,"authid":"002002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002","hasParent":true,"hasChildren":false},{"id":"002003","text":"房屋租金","state":null,"checked":false,"attributes":{"self":{"serialNo":"D4E33EF7C17747E9A52F765A71CBDABE","menuid":"002003","menuname":"房屋租金","menuURL":null,"parentid":"002","iconcls":null,"authid":"002003","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"002003002","text":"租金信息","state":null,"checked":false,"attributes":{"self":{"serialNo":"5D2D5331AFEC47FB8BA8D2AD15EFF2FF","menuid":"002003002","menuname":"租金信息","menuURL":"jsp/support/moneyPayInfo","parentid":"002003","iconcls":null,"authid":"002003002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002003","hasParent":true,"hasChildren":false},{"id":"002003001","text":"租房合同","state":null,"checked":false,"attributes":{"self":{"serialNo":"C7E633BAA3DE4EB0803F2D8C2EDC3196","menuid":"002003001","menuname":"租房合同","menuURL":"jsp/support/rentalAgreement","parentid":"002003","iconcls":null,"authid":"002003001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"002003","hasParent":true,"hasChildren":false}],"parentId":"002","hasParent":true,"hasChildren":true}],"parentId":"000","hasParent":true,"hasChildren":true},{"id":"003","text":"财务","state":null,"checked":false,"attributes":{"self":{"serialNo":"53E6874290344BFB8AE0713706F31840","menuid":"003","menuname":"财务","menuURL":null,"parentid":"000","iconcls":null,"authid":"003","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"003003","text":"住宿费","state":null,"checked":false,"attributes":{"self":{"serialNo":"131DDC09EDF549FE839DE571F6C2957D","menuid":"003003","menuname":"住宿费","menuURL":null,"parentid":"003","iconcls":null,"authid":"003003","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"003003002","text":"水电费","state":null,"checked":false,"attributes":{"self":{"serialNo":"7E7652596263419690E56D36A6B11083","menuid":"003003002","menuname":"水电费","menuURL":"jsp/finance/waterElectricity","parentid":"003003","iconcls":null,"authid":"003003002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"003003","hasParent":true,"hasChildren":false},{"id":"003003001","text":"租金","state":null,"checked":false,"attributes":{"self":{"serialNo":"A1519F777F5941E08E08634CC3770976","menuid":"003003001","menuname":"租金","menuURL":"jsp/finance/roomMoney","parentid":"003003","iconcls":null,"authid":"003003001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"003003","hasParent":true,"hasChildren":false}],"parentId":"003","hasParent":true,"hasChildren":true},{"id":"003002","text":"成考费","state":null,"checked":false,"attributes":{"self":{"serialNo":"8E0639EC6B7C4F399EFA5922BE329618","menuid":"003002","menuname":"成考费","menuURL":"jsp/finance/adultExam","parentid":"003","iconcls":null,"authid":"003002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"003","hasParent":true,"hasChildren":false},{"id":"003001","text":"学费","state":null,"checked":false,"attributes":{"self":{"serialNo":"F734A1B966DC4D47A7C473165C7B262B","menuid":"003001","menuname":"学费","menuURL":null,"parentid":"003","iconcls":null,"authid":"003001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"003001002","text":"升学学费","state":null,"checked":false,"attributes":{"self":{"serialNo":"0AAADCF1F3884271A5C42EE845F47317","menuid":"003001002","menuname":"升学学费","menuURL":"jsp/finance/higherGrade","parentid":"003001","iconcls":null,"authid":"003001002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"003001","hasParent":true,"hasChildren":false},{"id":"003001001","text":"开学学费","state":null,"checked":false,"attributes":{"self":{"serialNo":"7F84AB7E29B44987BF117A69A2750B6B","menuid":"003001001","menuname":"开学学费","menuURL":"jsp/finance/enteredSchool","parentid":"003001","iconcls":null,"authid":"003001001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"003001","hasParent":true,"hasChildren":false}],"parentId":"003","hasParent":true,"hasChildren":true}],"parentId":"000","hasParent":true,"hasChildren":true},{"id":"001","text":"学生管理","state":null,"checked":false,"attributes":{"self":{"serialNo":"7F0BCDA507EA426E9A49C1A6EC184569","menuid":"001","menuname":"学生管理","menuURL":null,"parentid":"000","iconcls":null,"authid":"001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[{"id":"001005","text":"就业信息","state":null,"checked":false,"attributes":{"self":{"serialNo":"425CA8235A894573B65BA269D5550AF6","menuid":"001005","menuname":"就业信息","menuURL":"jsp/student/employmentInfo","parentid":"001","iconcls":null,"authid":"001005","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"001","hasParent":true,"hasChildren":false},{"id":"001003","text":"缴费信息","state":null,"checked":false,"attributes":{"self":{"serialNo":"7FB270DC0BA745E7A58EA65D41B70D8F","menuid":"001003","menuname":"缴费信息","menuURL":"jsp/student/paymentInfo","parentid":"001","iconcls":null,"authid":"001003","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"001","hasParent":true,"hasChildren":false},{"id":"001001","text":"学生相关信息","state":null,"checked":false,"attributes":{"self":{"serialNo":"CF0BBFA5E82543F5A29B62E73614266A","menuid":"001001","menuname":"学生相关信息","menuURL":"jsp/student/studentReferInfo","parentid":"001","iconcls":null,"authid":"001001","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"001","hasParent":true,"hasChildren":false},{"id":"001004","text":"表现相关信息","state":null,"checked":false,"attributes":{"self":{"serialNo":"DE820480D19248F59443ECEAF1388506","menuid":"001004","menuname":"表现相关信息","menuURL":"jsp/student/performanceInfo","parentid":"001","iconcls":null,"authid":"001004","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"001","hasParent":true,"hasChildren":false},{"id":"001002","text":"班级相关信息","state":null,"checked":false,"attributes":{"self":{"serialNo":"E8BF8DBC615A4066BC0A069DF4DC0D01","menuid":"001002","menuname":"班级相关信息","menuURL":"jsp/student/classReferInfo","parentid":"001","iconcls":null,"authid":"001002","showflag":"Y","displayno":"1","operatime":"2017-10-27","operator":"0001","mark":null,"extend3":null,"extend2":null,"extend1":null,"extend5":null,"extend4":null}},"children":[],"parentId":"001","hasParent":true,"hasChildren":false}],"parentId":"000","hasParent":true,"hasChildren":true}],"parentId":"-1","hasParent":false,"hasChildren":true}
6.通过在线工具处理好的json格式文件
7.界面引用
<script type="text/javascript"
src="${pageContext.request.contextPath}/static/js/menu.js"></script>
工具(jar包与通用类)
1.通用工具类
2.导入jar包依赖
3.默认节点指定顶级节点的(通用类)
package com.houzhihong.util;
import com.houzhihong.vo.TreeVo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BuildTree {
/**
* 默认-1为顶级节点
* @param nodes
* @param <T>
* @return
*/
public static <T> TreeVo<T> build(List<TreeVo<T>> nodes) {
if (nodes == null) {
return null;
}
List<TreeVo<T>> topNodes = new ArrayList<TreeVo<T>>();
for (TreeVo<T> children : nodes) {
String pid = children.getParentId();
if (pid == null || "0".equals(pid)) {
topNodes.add(children);
continue;
}
for (TreeVo<T> parent : nodes) {
String id = parent.getId();
if (id != null && id.equals(pid)) {
parent.getChildren().add(children);
children.setHasParent(true);
parent.setChildren(true);
continue;
}
}
}
TreeVo<T> root = new TreeVo<T>();
if (topNodes.size() == 1) {
root = topNodes.get(0);
} else {
root.setId("000");
root.setParentId("-1");
root.setHasParent(false);
root.setChildren(true);
root.setChecked(true);
root.setChildren(topNodes);
root.setText("顶级节点");
Map<String, Object> state = new HashMap<>(16);
state.put("opened", true);
root.setState(state);
}
return root;
}
/**
* 指定idparam为顶级节点
* @param nodes
* @param idParam
* @param <T>
* @return
*/
public static <T> List<TreeVo<T>> buildList(List<TreeVo<T>> nodes, String idParam) {
if (nodes == null) {
return null;
}
List<TreeVo<T>> topNodes = new ArrayList<TreeVo<T>>();
for (TreeVo<T> children : nodes) {
String pid = children.getParentId();
if (pid == null || idParam.equals(pid)) {
topNodes.add(children);
continue;
}
for (TreeVo<T> parent : nodes) {
String id = parent.getId();
if (id != null && id.equals(pid)) {
parent.getChildren().add(children);
children.setHasParent(true);
parent.setChildren(true);
continue;
}
}
}
return topNodes;
}
}
4.dao层 拿到数据库的数据展示出来拿到通用类指定的节点格式输出json串
(进行打印)
package com.houzhihong.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.houzhihong.entity.Menu;
import com.houzhihong.util.BaseDao;
import com.houzhihong.util.BuildTree;
import com.houzhihong.util.PageBean;
import com.houzhihong.vo.TreeVo;
public class MenuDao extends BaseDao<Menu>{
public List<Menu> lsit(Menu menu,PageBean pagebean) throws InstantiationException, IllegalAccessException, SQLException{
String sql="select * from t_easyui_menu";
return super.executeQuery(sql,Menu.class, pagebean);
}
public static void main(String[] args) throws InstantiationException, IllegalAccessException, SQLException, JsonProcessingException {
MenuDao menuDao = new MenuDao();
List<Menu> lsit = menuDao.lsit(null, null);
//通过工具类完成指定格式的输出
List<TreeVo<Menu>> nodes = new ArrayList<TreeVo<Menu>>();
// Permission的格式不满足easyUI的组件展示格式的
//目的:将 List<TreeVo<Permission>>转换成 list<<TreeVct<T>>
//实现将list<Permission>得到的单个Permission转成 TreeVo,将TreeVo加入到nodes
TreeVo treeVo =null;
for (Menu p : lsit) {
treeVo = new TreeVo<>();
treeVo.setId(p.getMenuid());
treeVo.setText(p.getMenuname());
treeVo.setParentId(p.getParentid());
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put("self", p);
treeVo.setAttributes(attributes);
nodes.add(treeVo);
}
TreeVo<Menu> parent = BuildTree.build(nodes);
ObjectMapper om = new ObjectMapper();
String jsonstr = om.writeValueAsString(parent);
System.out.println(jsonstr);
}
}
界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--全局样式 -->
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/static/js/jquery-easyui-1.5.1/themes/black/easyui.css">
<!--定义图标 -->
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/static/js/jquery-easyui-1.5.1/themes/black/easyui.css">
<script type="text/javascript"
src="${pageContext.request.contextPath}/static/js/jquery-easyui-1.5.1/jquery.min.js"></script>
<!--组件库源码的js文件 -->
<script type="text/javascript"
src="${pageContext.request.contextPath}/static/js/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/static/js/index.js"></script>
<title>登录后的主界面</title>
</head>
<body class="easyui-layout">
<div data-options="region:'north',border:false"
style="height: 60px; background: #B3DFDA; padding: 10px">管理系统</div>
<div data-options="region:'west',split:true,title:'West'"
style="width: 150px; padding: 10px;">
<ul id="tt"></ul>
</div>
<div
data-options="region:'east',split:true,collapsed:true,title:'East'"
style="width: 100px; padding: 10px;">east region</div>
<div data-options="region:'south',border:false"
style="height: 50px; background: #A9FACD; padding: 10px;">south
region</div>
<div data-options="region:'center',title:'Center'"></div>
</body>
</html>