多级菜单实现逻辑

21 篇文章 0 订阅
3 篇文章 0 订阅

(1)数据库

这里写图片描述

(2)mybatis的sql语句

这里写图片描述

(3)MenuServiceImpl实现类中的方法

逻辑:先根据某一字段(getMenuUrl())判断当前子菜单中是否还有子菜单,如果有就获取所有子菜单,并set为当前子菜单的子菜单。

public List<Menu> listAllMenu() {
        List<Menu> rl = this.listAllParentMenu();
        for(Menu menu : rl){
            List<Menu> fistSubList = this.listSubMenuByParentId(menu.getMenuId());//根据父Id找出所有一级子菜单
            for (Menu m : fistSubList) {
                    if ("".equals(m.getMenuUrl())) {//如果一级子菜单有子菜单
                        List<Menu> secondSubList = this.listSubMenuByParentId(m.getMenuId());//根据一级子菜单id找出所有二级子菜单
                        m.setSubMenu(secondSubList);//给一级子菜单添加子菜单
                    }
            }
            menu.setSubMenu(fistSubList);
        }
        return rl;
    }

看图更清晰点

这里写图片描述

(4)页面的jstl语句

 <c:forEach items="${menuList}" var="menu">
        <c:if test="${menu.hasMenu}">
            <div title="${menu.menuName }" data-options="selected:true, iconCls:'icon-jcsjgl'" style="padding:10px">
                <c:forEach items="${menu.subMenu}" var="sub">
                    <div style="margin:10px 0">
                         <c:if test="${sub.hasMenu}">
                            <c:choose>
                                <c:when test="${not empty sub.menuUrl}">
                                    <div style="margin:2px 12px">
                                        <a href="javascript:openTab('${sub.menuId }','${sub.menuName }','${sub.menuUrl}','${sub.factoryId }')" class="easyui-linkbutton" data-options="plain:true" style="width: 150px;">${sub.menuName }</a> </div> </c:when> <c:otherwise> <a href="#" class="easyui-linkbutton c1" >${sub.menuName}</a> <c:forEach items="${sub.subMenu}" var="minSub"> <div style="margin:2px 12px"> <a href="javascript:openTab('${minSub.menuId }','${minSub.menuName }','${minSub.menuUrl}','${minSub.factoryId}')" class="easyui-linkbutton c1" data-options="plain:true" style="width: 150px;">${minSub.menuName }</a>
                                         </div> 
                                    </c:forEach> 
                                </c:otherwise>
                            </c:choose>
                         </c:if>
                    </div> 
                 </c:forEach>
            </div>
          </c:if>
        </c:forEach>

图上有注释

这里写图片描述

(5)效果

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值