【问题标题】:Iterating a HashMap in Freemarker在 Freemarker 中迭代 HashMap
【发布时间】:2017-01-03 21:57:52
【问题描述】:

如何在 Freemarker 中迭代哈希图。我使用的是 2.3.23 版本,无法从 hashmap 中获取值。我正在使用以下内容:

<#list hashMap?keys as key>
  ${key} = ${hashMap.get(key)}
<#list>

我什至尝试过以下方法:

<#list hashMap?keys as key>
  ${key} = ${hashMap[key]}
<#list>

它表示该值为空。但是,我检查了数据,每个键都有一个值。我无法将 freemarker 版本升级到 2.3.25

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你的 hashmap 是哪种类型的?

标签: java freemarker


【解决方案1】:

通常,问题在于您的密钥不是String-s,而是一些Java 对象,而不仅仅是数字/日期/布尔值。此类“杂项”对象可用作 FTL 字符串,因此您可以直接打印它们(并在内部调用 obj.toString())。因此hashMap[key] 不会抱怨key 不是一个FTL 字符串(因为它是),相反它基本上是hashMap.get(key.toString()),你有你的null。

由于不能更新到2.3.25,可以使用&lt;#list hashMap as key, value&gt;,所以必须使用?api(希望可以在配置中启用调用?api):

<#list hashMap?api.entrySet() as ent>
  ${ent.key} = ${ent.value}
</#list>

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 2021-08-06
    • 1970-01-01
    • 2011-03-09
    • 2011-03-16
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多