全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Freemarker如何生成树形导航菜单(递归)

很多导航菜单是树形的,即一级一级往下分,这样的结构固然需要用递归来处理。

对于Freemarker 来说,宏就相当于函数,其定义了签名及参数列表。

所以在freemarker页面应这样写:

<#macro menuTree menus> 
  <#if menus?? && menus?size gt 0> 
   <#list menus as menu> 
    <tr> 
     <td> 
      <input type="checkbox" name="ids" value="${menu.id}" /> 
     </td> 
     <td> 
   <span title="${menu.name!}" style="margin-left: ${menu.leaf * 30}px;[#if menu.leaf == 0] color: #000000;[/#if]"> 
   ${menu.menuName!} 
   </span> 
     </td> 
     <td> 
     ${menu.url!} 
     </td> 
     <td> 
     ${menu.permissionText!} 
     </td> 
     <td> 
     ${menu.sortNo!} 
     </td> 
     <td> 
      <a href="edit.jhtml?id=${menu.id}">[编辑]</a> 
     </td> 
    </tr> 
   <#if menu.menuBeans?? && menu.menuBeans?size gt 0> 
    <@menuTree menus = menu.menuBeans/> 
   </#if> 
   </#list> 
  </#if> 
 </#macro> 
 <!-- 调用宏 生成递归树 --> 
<@menuTree menus = dto /> 

后台数据:

[ 
 { 
  "id": 1, 
  "enable": true, 
  "remark": null, 
  "createBy": 1, 
  "createTime": 1503546411000, 
  "updateBy": 1, 
  "updateTime": 1503546415000, 
  "keyword": null, 
  "menuName": "系统管理", 
  "menuType": 1, 
  "parentId": null, 
  "iconcls": null, 
  "url": null, 
  "expand": null, 
  "sortNo": null, 
  "permission": null, 
  "moduleId": 1, 
  "parentName": null, 
  "leaf": 0, 
  "typeName": null, 
  "permissionText": null, 
  "menuBeans": [ 
   { 
    "id": 7, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "模块管理", 
    "menuType": 1, 
    "parentId": 1, 
    "iconcls": null, 
    "url": "/module/list", 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   }, 
   { 
    "id": 3, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "菜单管理", 
    "menuType": 1, 
    "parentId": 1, 
    "iconcls": null, 
    "url": "/menu/list", 
    "expand": null, 
    "sortNo": null, 
    "permission": "admin:add", 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   } 
  ] 
 }, 
 { 
  "id": 2, 
  "enable": true, 
  "remark": null, 
  "createBy": 1, 
  "createTime": 1503546411000, 
  "updateBy": 1, 
  "updateTime": 1503546415000, 
  "keyword": null, 
  "menuName": "用户管理", 
  "menuType": 1, 
  "parentId": null, 
  "iconcls": null, 
  "url": null, 
  "expand": null, 
  "sortNo": null, 
  "permission": null, 
  "moduleId": 1, 
  "parentName": null, 
  "leaf": 0, 
  "typeName": null, 
  "permissionText": null, 
  "menuBeans": [ 
   { 
    "id": 9, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "供应商管理", 
    "menuType": 1, 
    "parentId": 2, 
    "iconcls": null, 
    "url": null, 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   }, 
   { 
    "id": 8, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "部门管理", 
    "menuType": 1, 
    "parentId": 2, 
    "iconcls": null, 
    "url": null, 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   }, 
   { 
    "id": 6, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "权限管理", 
    "menuType": 1, 
    "parentId": 2, 
    "iconcls": null, 
    "url": "/user/list-6", 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   }, 
   { 
    "id": 5, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "角色管理", 
    "menuType": 1, 
    "parentId": 2, 
    "iconcls": null, 
    "url": "/user/list-5", 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   }, 
   { 
    "id": 4, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "分销商管理", 
    "menuType": 1, 
    "parentId": 2, 
    "iconcls": null, 
    "url": "/user/add-4", 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   }, 
   { 
    "id": 10, 
    "enable": true, 
    "remark": null, 
    "createBy": 1, 
    "createTime": 1503546411000, 
    "updateBy": 1, 
    "updateTime": 1503546415000, 
    "keyword": null, 
    "menuName": "员工管理", 
    "menuType": 1, 
    "parentId": 2, 
    "iconcls": null, 
    "url": null, 
    "expand": null, 
    "sortNo": null, 
    "permission": null, 
    "moduleId": 1, 
    "parentName": null, 
    "leaf": 1, 
    "typeName": null, 
    "permissionText": null, 
    "menuBeans": null 
   } 
  ] 
 } 
] 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Freemarker生成树形导航菜单  # Freemarker树形导航菜单  # Freemarker导航菜单  # freemarker判断对象是否为空的方法  # freemarker 数字格式化深入理解  # java Spring整合Freemarker的详细步骤  # 使用Java进行FreeMarker的web模板开发的基础教程  # spring mvc整合freemarker基于注解方式  # 基于Java的Spring框架来操作FreeMarker模板的示例  # Freemarker常用指令使用示例  # FreeMarker配置(Configuration)  # Java操作FreeMarker模板引擎的基本用法示例小结  # Java用freemarker导出word实用示例  # 递归  # 往下  # 需要用  # 大家多多  # input  # td  # checkbox  # type  # list  # size  # tr  # menu  # ids  # left  # margin  # leaf  # span  # id  # style  # title 


相关文章: 建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  建站主机是否属于云主机类型?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何通过VPS建站无需域名直接访问?  如何快速搭建高效可靠的建站解决方案?  如何快速搭建支持数据库操作的智能建站平台?  如何在建站主机中优化服务器配置?  ,购物网站怎么盈利呢?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  如何通过二级域名建站提升品牌影响力?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何通过cPanel快速搭建网站?  C#怎么使用委托和事件 C# delegate与event编程方法  h5在线制作网站电脑版下载,h5网页制作软件?  如何确保西部建站助手FTP传输的安全性?  寿县云建站:智能SEO优化与多行业模板快速上线指南  如何高效配置IIS服务器搭建网站?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何在阿里云香港服务器快速搭建网站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  海南网站制作公司有哪些,海口网是哪家的?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  建站之星后台密码遗忘或太弱?如何重置与强化?  图册素材网站设计制作软件,图册的导出方式有几种?    赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  如何快速搭建高效服务器建站系统?  网站制作报价单模板图片,小松挖机官方网站报价?  建站之星云端配置指南:模板选择与SEO优化一键生成  网站微信制作软件,如何制作微信链接?  定制建站是什么?如何实现个性化需求?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  红河网站制作公司,红河事业单位身份证如何上传?  javascript基本数据类型及类型检测常用方法小结  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  一键网站制作软件,义乌购一件代发流程?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何在宝塔面板中修改默认建站目录?  ,有什么在线背英语单词效率比较高的网站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在IIS7上新建站点并设置安全权限?  如何通过FTP服务器快速搭建网站?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何在云服务器上快速搭建个人网站?  如何快速建站并高效导出源代码?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何通过西部数码建站助手快速创建专业网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。