【发布时间】:2020-03-02 21:15:21
【问题描述】:
我是 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}
}>
方法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
【问题讨论】:
-
你通常在java代码(之前)而不是freemarker中构建地图
-
在将列表传递给转换后(在 Java 中),我得到了命名空间值。这部分需要在freemarker中处理。
-
myNamespace.varA的值是什么类型?你把它当作一个宏或用户定义的指令来使用,但它是吗?
标签: dictionary namespaces variable-assignment freemarker variable-declaration