<#if resultMap??>
{
"code":"200",
"success":"true",
"message":"请求成功",
<#--定义宏,名字:tree,传入参数:datas-->
<#macro tree datas>
<#--获取datas集合中的元素data,data是map-->
<#list datas as data>
{
<#if data.COMPONENT ??>
"component":"${data.COMPONENT!'-'}",
</#if>
"name":"${data.NAME!'-'}",
"icon":"${data.ICON!'-'}",
"path":"${data.URL!'-'}"
<#--查看map中是否存在routes,routes是子菜单集合-->
<#if data.routes?? && data.routes?size gt 0>
,"routes":[
<#--routes存在将routes作为参数再次调用tree-->
<@tree datas=data.routes/>
]
</#if>
}
<#if data_has_next>,</#if>
</#list>
</#macro>
"data":[
<#--获取数据集调用tree-->
<@tree datas=resultMap.data />
]
}
<#else>
{
"success":"false",
"message":"操作失败",
"data":[]
}
</#if>
公司规定数据给前端之前不能直接转json,要通过freemarker模板转换json字符串
freemarker在构造不确定层数的菜单树时不能直接写,通过定义宏并递归可以实现需求