Я новичок в freemarker и хочу решить описанную ниже проблему.
У меня есть несколько переменных пространства имен
Пример:
<@myNamespace.varA/>
<@myNamespace.varB/>
<@myNamespace.varC/>
Я хочу поставитьв хеш. Есть три способа, которые я могу придумать, но я не уверен, что они верны?
Метод 1
<#assign MyHash = {
"keyA" : <@myNamespace.varA/>,
"keyB" : <@myNamespace.varB/>,
"keyC" : <@myNamespace.varC/>
}>
Метод 2
<#assign MyHash = {
"keyA" : ${myNamespace.varA},
"keyB" : ${myNamespace.varB},
"keyC" : ${myNamespace.varC}
}>
Метод3
<#assign varA> <@myNamespace.varA/> </assign>
<#assign varB> <@myNamespace.varB/> </assign>
<#assign varC> <@myNamespace.varC/> </assign>
<#assign MyHash = {
"keyA" : varA,
"keyB" : varB,
"keyC" : varC
}>
Метод 4 (сохранение varA, varB, varC в локальной области)
<#function getMyHash>
<#local varA> <@myNamespace.varA/> </local>
<#local varB> <@myNamespace.varB/> </local>
<#local varC> <@myNamespace.varC/> </local>
<#return {
"keyA" : varA,
"keyB" : varB,
"keyC" : varC
}>
</#function>
<#assign MyHash = getMyHash()/>
Примечание:
В пространстве имен могут быть другие переменные, которые яне хочу ставить хэш как
<@myNamespace.varD/>
<@myNamespace.varE/>
... etc