首页 > 开发 > Java > 正文

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

2024-07-13 10:11:31
字体:
来源:转载
供稿:网友

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

对于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   ${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    }   ]  } ] 

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表