zoukankan      html  css  js  c++  java
  • 树形结构菜单

    项目中查询菜单目录表,里面有父子关系,根据父子关系,把菜单目录表展示成树的形式

      查询出所有的菜单目录内容

    SysUserMVO sessionUser = SecurityManager.getSessionUser();
    List<MenuCatalogMVO> catalogs = sessionUser.getMenuCatalog();

      将数据根据父子关系展示成json格式

    Map<String,Object> leafMap = getLevelMenuCatalog(catalogs,leafNodeIds,MENU_LV);
    
    public Map<String, Object> getLevelMenuCatalog(List<MenuCatalogMVO> catalogs, List<String> parentCatalogIds, String... catalogCodes) {
        List<Object> treeList = new LinkedList<Object>();
        List<String> leafNodeId = new LinkedList<String>();
        Map<String, Object> rsMap = new HashMap<String, Object>();
        for (MenuCatalogMVO menuCatalog : catalogs) {
            if ((parentCatalogIds != null && parentCatalogIds.size() > 0) ? parentCatalogIds.contains(menuCatalog.getParentCatalogId()) : StringUtils.isBlank(menuCatalog.getParentCatalogId())) {
                if (catalogCodes.length > 0 && Arrays.asList(catalogCodes).contains(menuCatalog.getCatalogCode())) {
                    Map<String, Object> treeMap = new HashMap<String, Object>();
                    treeMap.put("id", menuCatalog.getMenuCatalogId());
                    treeMap.put("text", menuCatalog.getCatalogName());
                    treeMap.put("code", menuCatalog.getCatalogCode());
                    treeMap.put("parentId", menuCatalog.getParentCatalogId());
                    childMenuCatalog(treeMap, catalogs, catalogCodes, leafNodeId);
                    treeList.add(treeMap);
                }
            }
        }
        rsMap.put("LEAFNODEIDS", leafNodeId);
        JSONArray jo = JSONArray.fromObject(treeList);
        String rs = jo.toString();
        rsMap.put("RS", rs);
        return rsMap;
    }
    
    public void childMenuCatalog(Map<String, Object> parentMap, List<MenuCatalogMVO> catalogs, String[] catalogCodes, List<String> leafNodeId) {
        List<Object> treeList = new LinkedList<Object>();
        for (MenuCatalogMVO menuCatalog : catalogs) {
            Map<String, Object> treeMap = new HashMap<String, Object>();
            if (catalogCodes.length > 0 && Arrays.asList(catalogCodes).contains(menuCatalog.getCatalogCode())) {
                if (parentMap.get("id").equals(menuCatalog.getParentCatalogId())) {
                    treeMap.put("id", menuCatalog.getMenuCatalogId());
                    treeMap.put("text", menuCatalog.getCatalogName());
                    treeMap.put("code", menuCatalog.getCatalogCode());
                    treeMap.put("parentId", menuCatalog.getParentCatalogId());
                    childMenuCatalog(treeMap, catalogs, catalogCodes, leafNodeId);
                    treeList.add(treeMap);
                }
            }
        }
        if (treeList.size() > 0) {
            parentMap.put("children", treeList);
        } else {
            leafNodeId.add((String) parentMap.get("id"));
        }
    }
     catalog = (String) leafMap.get("RS");

      这样打印出的catalog就是有层级关系的了

  • 相关阅读:
    java线程池实践
    JAVA中间件(middleware)模式
    [开源]制作docker镜像不依赖linux和Docker环境
    利用浏览器favicon的缓存机制(F-Cache)生成客户端浏览器唯一指纹
    Docker镜像构建原理解析(不装docker也能构建镜像)
    ORM框架对分表分库之分库和分表指定不同的字段
    volatile的内存屏障的坑
    go和python的比较,获取当前时间是今年第几个星期
    c++学生管理系统
    c++学生管理系统(三)
  • 原文地址:https://www.cnblogs.com/cxli99/p/13360851.html
Copyright © 2011-2022 走看看