访问键位于变量中的FreeMarker映射

时间:2019-07-08 19:42:07

标签: xml apache freemarker

我有一个Apache FreeMarker“地图”变量,我需要访问地图中的一个元素。问题是我要查找的元素的“键”存储在变量本身中。考虑以下地图:

<#assign mymap = {"key1" : "value1", "key2" : "value2"}>

现在,我可以通过以下类似方式轻松访问地图:

${mymap.key1}

这很好用。我的问题是“ key1”包含在这样的变量中:

<#assign keyname = "key1">
<-- Now I want to access the map via whatever key is in the variable keyname -->
${mymap.${keyname}}

不幸的是,以上语法是非法的。我猜想FreeMarker不够聪明,无法执行嵌套插值。那么,我该如何完成呢?粗略地阅读文档似乎并没有真正谈论这种情况。看来这很普遍。

1 个答案:

答案 0 :(得分:1)

使用alternative syntax进行哈希

 mymap[keyname]
  

如果要使用表达式指定子变量名称,则有另一种语法:book [“ title”]。在方括号中,您可以给出任何表达式,只要它的计算结果为字符串即可。因此,使用此数据模型,您还可以通过book [test]阅读书名。更多示例;这些都是等效的:book.author.name,book [“ author”]。name,book.author [“ name”],book [“ author”] [“ name”]。