freemarker如何定义一个局部 list变量
遇到一个问题,freemarker使用Map<String,List>传递数据,现在有一个递归调用,如何定义一个局部list变量,由于变量名是变化的,比如我Map存item1,item2....,这几个list列表不确定,在库中查出来的,我在模板中遍历时如何把item1,item2,list变量取出来呢,,,
模板在下面,如何拼接呢,freemarker新手,查文档没查到
<node> <id>${ids}</id> <#if list?size != 0> <#list list as ls> <${ls["VC2KEY"]}>${ls["ITEMVALUE"]}</${ls["VC2KEY"]}> </#list> </#if> <#--公共模块列表 2--> <#if commonModulesList?size != 0> <commonModuleList> <@common paraList=commonModulesList value=1 /> </commonModuleList> </#if> <#--通讯模块列表 3 --> <#if communicateModulesList?size != 0> <moduleList> <@common paraList=communicateModulesList value=1 /> </moduleList> </#if> <#--功能模块列表 4 --> <#if functionModulesList?size != 0> <functionModuleList> <@common paraList=functionModulesList value=1 /> </functionModuleList> </#if> <#--任务模块列表 5 --> <#if taskModulesList?size != 0> <taskListSchedule> <@common paraList=taskModulesList value=1 /> </taskListSchedule> </#if> </node> <#macro common paraList value=1> <#if paraList?size != 0> <#list paraList as modules> <function> <id>${modules["TASKID"]}</id> <name>${modules["TASKNAME"]}</name> <bean>${modules["TASKNAME"]}</bean> <#local y ="items${value}"> <#local z="${y}" > <#if z?size != 0> <config key="config" desc="配置"> <![CDATA[ <function id="${modules["TASKID"]}" name="${modules["TASKNAME"]}" desc="${modules["VC2DESC"]}" bean="${modules["VC2DESC"]}" > <#list z as item> <item key="${item["VC2KEY"]}" value="${item["ITEMVALUE"]}" desc="${item["VC2DESC"]}" /> </#list> <#-- end items --> </function> ]]> </config> </#if> </function> <#local nextvalue="${value}+1" /> <#if taskList?size != 0 > <@common paraList = taskList value=nextvalue /> </#if> </#list> </#if> </#macro>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
无解么,能不能换个思路
嗯,是对的,但我用Map, put的时候,是根据String的key传入的,代码如下,是递归加入变量的,如果有多个items,后面一个会覆盖前一个.
变量名本身是变化的,没必要啊,你不就是枚举出 Map 中的 List 吗?
用同一个固定的变量名就可以,处理完一个接着下一个