如何使用带有 hashmap 变量的 freemarker 列表
Posted
技术标签:
【中文标题】如何使用带有 hashmap 变量的 freemarker 列表【英文标题】:How to use freemarker list with hashmap variable 【发布时间】:2016-04-26 15:30:15 【问题描述】:在 Java 中我使用的是
HashMap<String, String>
然后在我的 freemarker 模板中可用。
我可以这样访问它
Time:$candidFieldsList["STD-TIME_Environmental_1"]
这将从我的地图中提取键 STD-TIME_Environmental_1 的值,这工作正常。现在我需要将它与一个列表结合起来以减少冗余代码。
我的模板中有一个区域需要重复 4 次
Time:$candidFieldsList["STD-TIME_Environmental_1"]
与其他部分的区别只是数字,所以我尝试使用列表来解决这个问题。但它没有工作
<#list 1..4 as x>
Time:$candidFieldsList["STD-TIME_Environmental_"$x]
</#list>
它不返回键的值,而是返回解析器异常或此表达式的字符串。
freemarker.core.ParseException: Encountered "$" at line 4, column 50 in template.ftl.
期待以下之一: “]”…… “。” ... “[”... “(”…… “?” ... “!” ...
【问题讨论】:
【参考方案1】:尝试使用+
运算符连接字符串:
<#list 1..4 as x>
Time:$candidFieldsList["STD-TIME_Environmental_" + x]
</#list>
【讨论】:
顺便说一句,"STD-TIME_Environmental_$x"
也可以工作,只有 $x
必须在字符串(不再是)文字内,这与 OP 的尝试不同。以上是关于如何使用带有 hashmap 变量的 freemarker 列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JSP 页面中从 Java 类中设置 hashmap 的值以便在控制器中进一步使用
如何使用 HashMap 并在 ArrayAdapter 中使用它来显示微调器中的值
使用带有 hashmap 的 mybatis 结果的不需要的 Json 结果
如何避免重复代码初始化 hashmap 的 hashmap?