自由标记迭代哈希映射键

2022-08-31 10:59:13

Freemarker有两种集合数据类型,列表和哈希映射 有没有办法像我们处理列表一样迭代哈希映射键?

因此,如果我有一个带有数据的变量,让我们说:

user : {
  name : "user"
  email : "looser@everything.com"
  homepage : "http://nosuchpage.org"
}

我想打印用户的所有属性及其值。这是无效的,但目标很明确:

<#list user.props() as prop>
  ${prop} = ${user.get(prop)}
</#list>

答案 1

编辑:不要将此解决方案与FreeMarker 2.3.25及更高版本一起使用,尤其是不要。查看其他答案。.get(prop)

您可以使用内置的按键功能,例如,这应该有效:

<#list user?keys as prop>
    ${prop} = ${user.get(prop)}
</#list>  

答案 2

仅供参考,看起来检索值的语法已根据以下内容进行了更改:

http://freemarker.sourceforge.net/docs/ref_builtins_hash.html

<#assign h = {"name":"mouse", "price":50}>
<#assign keys = h?keys>
<#list keys as key>${key} = ${h[key]}; </#list>

推荐