浏览代码

Menu#children 字段默认是 null

reghao 4 年之前
父节点
当前提交
d94ed6f662

+ 0 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/MenuQuery.java

@@ -38,7 +38,6 @@ public class MenuQuery {
         map.forEach((pid, menus) -> {
             list.addAll(menus.stream()
                     .sorted(Comparator.comparing(Menu::getPos))
-                    .peek(menu -> menu.setChildren(null))
                     .collect(Collectors.toList()));
         });
 

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/po/Menu.java

@@ -46,7 +46,8 @@ public class Menu extends BaseEntity<Integer> {
     // Menu 拥有的所有子 Menu(按排序顺序)
     // 不持久化
     @Transient
-    private Map<Integer, Menu> children = new HashMap<>();
+    private Map<Integer, Menu> children;
+    //private Map<Integer, Menu> children = new HashMap<>();
 
     public Menu(int id, String name) {
         this.id = id;

+ 6 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/service/HomeService.java

@@ -53,7 +53,12 @@ public class HomeService {
         keyMenu.forEach((id, menu) -> {
             Menu parentMenu = keyMenu.get(menu.getPid());
             if (parentMenu != null) {
-                parentMenu.getChildren().put(menu.getPos(), menu);
+                Map<Integer, Menu> childMenus = parentMenu.getChildren();
+                if (childMenus == null) {
+                    childMenus = new HashMap<>();
+                    parentMenu.setChildren(childMenus);
+                }
+                childMenus.put(menu.getPos(), menu);
             } else {
                 treeMenu.put(menu.getPos(), menu);
             }

+ 3 - 3
dmaster/src/main/resources/templates/main.html

@@ -58,20 +58,20 @@
                     <p class="layui-side-user-designation">在线</p>
                 </div>
             </div>
-            <!-- 导航区域 -->
+            <!-- TODO 导航区域(最多只能拥有三级菜单) -->
             <ul class="layui-nav layui-nav-tree" lay-filter="layui-nav-side">
                 <li class="layui-nav-item" th:each="item:${treeMenu}">
                     <a href="javascript:" th:attr="lay-url=${item.value.url}">
                         <i th:class="${item.value.icon}"></i>
                         <span class="layui-nav-title" th:text="${item.value.name}">一级菜单</span>
                     </a>
-                    <dl class="layui-nav-child" th:if="${item.value.children.size()}">
+                    <dl class="layui-nav-child" th:if="${item.value.children} != null">
                         <dd th:each="secondItem:${item.value.children}">
                             <a href="javascript:" th:attr="lay-url=${secondItem.value.url}">
                                 <i th:class="${secondItem.value.icon}"></i>
                                 <span class="layui-nav-title" th:text="${secondItem.value.name}">二级菜单</span>
                             </a>
-                            <dl class="layui-nav-child" th:if="${secondItem.value.children.size()}">
+                            <dl class="layui-nav-child" th:if="${secondItem.value.children} != null">
                                 <dd th:each="thirdItem:${secondItem.value.children}">
                                     <a href="javascript:" th:attr="lay-url=${thirdItem.value.url}">
                                         <i th:class="${thirdItem.value.icon}"></i>