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很多基本类(如String
、Number
、List
等)是隐藏的。而不是他们的 API-s,你应该使用所谓的 "built-ins",就像在这种情况下:key?upper_case
。 (另请参阅:http://freemarker.org/docs/ref_builtins.html)
要遍历 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很多基本类(如String
、Number
、List
等)是隐藏的。而不是他们的 API-s,你应该使用所谓的 "built-ins",就像在这种情况下:key?upper_case
。 (另请参阅:http://freemarker.org/docs/ref_builtins.html)