
1.tree结构类
@Setter
@Getter
public class SysRoleVo implements Serializable {
private static final long serialVersionUID = 8026611576110599333L;
/**
* 角色id
*/
private Integer roleId;
/**
* 角色名称
*/
private String roleName;
public static SysRoleVo convert(SysRole sysRole) {
SysRoleVo sysRoleVo = new SysRoleVo();
BeanUtils.copyProperties(sysRole, sysRoleVo);
return sysRoleVo;
}
}
2.
SysMenu 是实体类
/**
* 查询所有菜单
*/
public List<SysMenuRoleVO> getAllMenu() {
//从数据库把所有菜单查出来
List<SysMenu> allList = menuService.getAllMenu();
SysMenuRoleVO sysMenuRoleVO;
List<SysMenuRoleVO> list = new ArrayList<>();
for (SysMenu c : allList) {
if (c.getParent() == 0) {
sysMenuRoleVO = new SysMenuRoleVO();
sysMenuRoleVO.setId(c.getMenuId());
sysMenuRoleVO.setText(c.getMenuName());
list.add(sysMenuRoleVO);
}
}
recursiveComboTree(list, allList);
return list;
}
private void recursiveComboTree(List<SysMenuRoleVO> list, List<SysMenu> allList) {
List<SysMenuRoleVO> currList = new ArrayList<>();
SysMenuRoleVO comboTree;
for (SysMenuRoleVO temp : list) {
for (SysMenu c : allList) {
if (temp.getId().equals(c.getParent())) {
comboTree = new SysMenuRoleVO();
comboTree.setId(c.getMenuId());
comboTree.setText(c.getMenuName());
temp.getChildren().add(comboTree);
currList.add(comboTree);
}
}
}
if (!CollectionUtils.isEmpty(currList)) {
recursiveComboTree(currList, allList);
}
}
3.前端页面
<ul id="menu-category"></ul>
$('#menu-category').tree({
method: "GET",
url: "/meta_dict/role/getAllMenu",
cascadeCheck:false,
checkbox:true,
loadFilter: function(data){
if (data.data){
return data.data;
} else {
return data;
}
});
每次写tree都要去找资料,每天进步一点点吧
本文介绍了一种基于Java的树形数据结构实现方法,包括SysRoleVo类的定义及SysMenu实体类的使用,通过递归算法构建前端所需的树形菜单结构。前端采用树插件展示从后端获取的菜单数据。
2万+

被折叠的 条评论
为什么被折叠?



