Java构建树形菜单的实例代码(支持多级菜单)
效果图:支持多级菜单。
创新互联公司主营回民网站建设的网络公司,主营网站建设方案,成都App定制开发,回民h5重庆小程序开发公司搭建,回民网站营销推广欢迎回民等地区企业咨询

菜单实体类:
public class Menu {
// 菜单id
private String id;
// 菜单名称
private String name;
// 父菜单id
private String parentId;
// 菜单url
private String url;
// 菜单图标
private String icon;
// 菜单顺序
private int order;
// 子菜单
private List菜单一般需要排序,我们根据Menu的order字段进行排序:
/* * 排序,根据order排序 */ public Comparator
生成树的方法:
public MapfindTree(){ Map data = new HashMap (); try {//查询所有菜单 List allMenu = menuDao.findTree(); //根节点 List rootMenu = new ArrayList (); for (Menu nav : allMenu) { if(nav.getParentId().equals("0")){//父节点是0的,为根节点。 rootMenu.add(nav); } } /* 根据Menu类的order排序 */ Collections.sort(rootMenu, order()); //为根菜单设置子菜单,getClild是递归调用的 for (Menu nav : rootMenu) { /* 获取根节点下的所有子节点 使用getChild方法*/ List childList = getChild(nav.getId(), allMenu); nav.setChildren(childList);//给根节点设置子节点 } /** * 输出构建好的菜单数据。 * */ data.put("success", "true"); data.put("list", rootMenu); return data; } catch (Exception e) { data.put("success", "false"); data.put("list", new ArrayList()); return data; } }
获取子菜单:
/** * 获取子节点 * @param id 父节点id * @param allMenu 所有菜单列表 * @return 每个根节点下,所有子菜单列表 */ public ListgetChild(String id,List allMenu){ //子菜单 List childList = new ArrayList (); for (Menu nav : allMenu) { // 遍历所有节点,将所有菜单的父id与传过来的根节点的id比较 //相等说明:为该根节点的子节点。 if(nav.ParentId().equals(id)){ childList.add(nav); } } //递归 for (Menu nav : childList) { nav.setChildren(getChild(nav.getId(), allMenu)); } Collections.sort(childList,order());//排序 //如果节点下没有子节点,返回一个空List(递归退出) if(childList.size() == 0){ return new ArrayList (); } return childList; }
最后返回的JSON串如下:
{
"success": "true",
"list": [
{
"id": "1",
"name": "Java",
"parentid": "0",
"url": "http://www.aliouchen.com",
"order": 1,
"children": [
{
"id": "2",
"name": "并发编程",
"parentid": "1",
"url": "http://www.aliouchen.com",
"order": 1,
"children": []
},
{
"id": "3",
"name": "多线程",
"parentid": "1",
"url": "http://www.aliouchen.com",
"order": 2,
"children": [
"id": "4",
"name": "Thread",
"parentid": "3",
"url": "http://www.aliouchen.com",
"order": 1,
"children":[]
]
}
]
},
{
"id": "5",
"name": "Python",
"parentid": "0",
"url": "http://www.aliouchen.com",
"order": 2,
"children": []
}
]
}总结
以上所述是小编给大家介绍的Java构建树形菜单的实例代码(支持多级菜单),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对创新互联网站的支持!
新闻标题:Java构建树形菜单的实例代码(支持多级菜单)
文章位置:http://www.jxjierui.cn/article/ghcpip.html


咨询
建站咨询
