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

对于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小时内与您取得联系。