Jfinal模板解析菜单树

昨天用了一天时间写后台菜单树,今天就要想办法用jfinal的模板解析并显示,因为第一次使用jfinal的模板引擎,有点没有信心,但后来还是很容易的就是实现了。

1.回顾一下在这个过程中遇到的几个小问题

(1)我返回菜单树的结构如下所示:

{f9721e2f4a704969b6c3b1ae166f6333=
[{action_url:/perm,action_type:1,permission_name:权限管理,},
{action_url:/user,action_type:1,permission_name:用户管理},
{action_url:/role,action_type:1,permission_name:角色管理}]
}

这里只展示了一个一级菜单及其下面的菜单树,键为一级菜单的id,值为一级菜单下的子菜单。 (其实一开始我的键用的是一个permission对象,这样我需要的信息我都可以直接获取,但是后来看了下官方文档说键只能用String ,所以我就改为id,取出id再调用后台方法去获取菜单权限)

(2)map.key的时候这个key只能是常量,不能是变量,如果key是变量,只能用map[key]才行。

(3)遍历一个List<Object>,开始我用的是for(s:list),发现不行,后来用了 #for(i=0;i<s;i++)的形式就可以了。

2回顾一下代码解析过程如下所示:

#define traceShowMenu(menuTrees)
 #set(currentMenu = getCurrentUrl())
   #for(menuTree : menuTrees)
      #set(parentMenu=getParentMenu(menuTree))
       <li #if(parentMenu.ispen) class="layui-nav-item layui-nav-itemed" #else class="layui-nav-item"    #end" >
           <a class="javascript:;" href="javascript:;">#(parentMenu.permission_name)</a>
	        #set(subMenuList = menuTree[parentMenu.id])
	        <dl class="layui-nav-child">
	            #for(i=0;i<subMenuList.size();i++)
	            <dd #if(currentMenu==subMenuList[i].action_url) class="layui-this" #end >
			 <a href="#(subMenuList[i].action_url)">#(subMenuList[i].permission_name)                                                                  </a>
			</dd> 
	            #end
	        </dl>
	  </li>
   #end
#end

(1)首先定义一个函数,已供后面左侧导航调用并显示

(2) #set(currentMenu = getCurrentUrl())用于获取每次请求的路径,以便设置选中和展开状态

(3) #for(menuTree : menuTrees)循环整个属性菜单,获取每个一级菜单树(后台把每个一级菜单树都放在List下)

(4) #set(parentMenu=getParentMenu(menuTree))获取一级菜单树,如果有多级,则表示获取父菜单树

(5)( <li #if(parentMenu.ispen) class="layui-nav-item layui-nav-itemed" #else class="layui-nav-item" #end" >) <a class="javascript:;" href="javascript:;">#(parentMenu.permission_name)</a>显示一级菜单(或父菜单),如果有下级被选中,则展开,否则不展开。

(6) #set(subMenuList = menuTree[parentMenu.id])根据一级菜单(或父菜单)id获取所有子菜单

(7)循环所有子菜单并显示

          <dl class="layui-nav-child">
            #for(i=0;i<subMenuList.size();i++)
            <dd #if(currentMenu==subMenuList[i].action_url) class="layui-this" #end >
		 <a href="#(subMenuList[i].action_url)">#(subMenuList[i].permission_name)                                                                                     </a>
		</dd> 
            #end
        </dl>

转载于:https://my.oschina.net/u/2427561/blog/1530304

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值