我是freemarker的新手,并希望解决以下问题。
我有一些命名空间变量
<@myNamespace.varA/>
<@myNamespace.varB/>
<@myNamespace.varC/>
我想将其放入哈希中。我可以想到三种方式,但是我不确定它们是否正确?
<#assign MyHash = {
"keyA" : <@myNamespace.varA/>,
"keyB" : <@myNamespace.varB/>,
"keyC" : <@myNamespace.varC/>
}>
<#assign MyHash = {
"keyA" : ${myNamespace.varA},
"keyB" : ${myNamespace.varB},
"keyC" : ${myNamespace.varC}
}>
<#assign varA> <@myNamespace.varA/> </assign>
<#assign varB> <@myNamespace.varB/> </assign>
<#assign varC> <@myNamespace.varC/> </assign>
<#assign MyHash = {
"keyA" : varA,
"keyB" : varB,
"keyC" : 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
如果我很了解你想要什么,就像这样:
<#function getMyHash>
<#return {
"keyA" : myNamespace.varA,
"keyB" : myNamespace.varB,
"keyC" : myNamespace.varC
}>
</#function>
<@.../>
用于调用宏(或其他用户定义的指令),因此不相关。除非myNamespace.varA
等是宏,并且您想将它们的输出放入该哈希中,但我想并非如此。