Freemarker 将哈希值转换为字符串

Freemarker converting a hash to String

要遍历 hashmap,可以使用 hash built-in 访问 Map 的值和键。现在我想对键进行操作,即将键(它是一个字符串)大写:

<#assign keys = formats?keys>
<#list keys as key>
  ${key.toUpperCase()} = ${formats[key].getFileName()}
</#list>

但是我得到了错误

For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> key  [in template "src/main/resources/test.ftl" at line 41, column 69]

----
FTL stack trace ("~" means nesting-related):
- Failed at: ${key.toString().toUpperCase()}  [in template "src/main/resources/test.ftl" at line 41, column 67]
----

有什么提示可以让模板中的键(小写字母)变为大写字母吗?或者如何将散列转换为字符串?

在FreeMarker中JavaAPI很多基本类(如StringNumberList等)是隐藏的。而不是他们的 API-s,你应该使用所谓的 "built-ins",就像在这种情况下:key?upper_case。 (另请参阅:http://freemarker.org/docs/ref_builtins.html