2016-06-20 2 views
0

Чтобы перебрать хешмапы, можно использовать hash built-in для доступа к значениям и ключам Карты. Теперь я хочу работать на ключе, то есть в прописные ключ (который является строкой):Freemarker преобразует хэш в String

<#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] 
---- 

Любой намек, как получить ключ (который в нижнем регистре) в верхний регистр в шаблоне? или как преобразовать хэш в строку?

ответ

2

В FreeMarker API Java многих базовых классов (таких как String, Number, List и т. Д.) Скрыт. Вместо своих API-интерфейсов вы должны использовать так называемые «встроенные», как в этом случае: key?upper_case. (См. Также: http://freemarker.org/docs/ref_builtins.html)

Смежные вопросы