树返回的格式是
layui.tree({
elem: '#demo' //传入元素选择器
,nodes: [{ //节点
name: '父节点1'
,children: [{
name: '子节点11'
},{
name: '子节点12'
}]
},{
name: '父节点2(可以点左侧箭头,也可以双击标题)'
,children: [{
name: '子节点21'
,children: [{
name: '子节点211'
}]
}]
}]
});
首先我们我们把nodes封装成他所需要的格式: 直接上代码
public class TreeNode {
private String id;// 绑定节点的标识值。
private String name;// 显示的节点文本。
private String iconCls;// 显示的节点图标CSS类ID
private String version;//版本
private String state;// 节点状态,'open' 或 'closed'
private List children;// 子节点
//下面这几个属性是我需要的就封装进去啦(你们可以不封装进去)
private boolean module; //是否事项目
private String projectId; //项目Id
private String projectName;
get() set()....
}
下面是控制器的代码controller
/**
* 展示项目树
*
* */
@RequestMapping(value="selectModuleTree",produces = "application/json; charset=utf-8")
@ResponseBody
public List selectModuleTree(){
List treeList = moduleConfigService.selectModuleTree();
return treeList;
}
然后servletImpl的
@Override
public List selectModuleTree() {
List> treeList = baseModuleConfigDao.selectModuleTree();
//ruturn 掉下面的方法
return getChildrenNodeModelue(treeList);
}
public List getChildrenNodeModelue(List> nodes) {
List nodeList = new ArrayList();
for (Map node : nodes) {
TreeNode treeNode = new TreeNode();
// 标识符
treeNode.setId(node.get("MODULE_ID").toString());
// 显示文本
treeNode.setName(node.get("NAME").toString());
//是否是模板
treeNode.setModule(false);
//项目Id
/*treeNode.setProjectId(node.get("PROJECT_ID").toString());*/
// 获取子节点
List> childrenNode = baseModuleConfigDao
.selectModulModul(node.get("MODULE_ID").toString());
treeNode.setState("open");
// 有子节点,获取子节点的下级节点
if (childrenNode.size() > 0) {
//寻找节点调自己方法
List childrenlist = getChildrenNodeModelue(childrenNode);
treeNode.setChildren(childrenlist);
} else {
}
nodeList.add(treeNode);
}
return nodeList;
}
mapping中映射查询的值 BaseModuleConfigMapper.xml
SELECT * FROM tbl_base_module_config WHERE PARENT_ID = '0'
SELECT
tc.*,
bp.PROJECT_NAME AS projectName
FROM tbl_base_module_config tc
LEFT JOIN tbl_base_project bp ON tc.PROJECT_ID = bp.PROJECT_ID
WHERE tc.PARENT_ID = #{parentId}