0

我正在尝试创建一个 FreeMarker 宏,它可以返回字符串连接和输入变量的插值:

<#macro findValue var>
   <#if (.vars["foo." + var]) ??> 
     .vars["foo." + var]
   <#else>
     ${.vars["bar." + var]}
   </#if>
</#macro>

不幸的是,它不起作用。首先,${.vars["bar." + var]}给出一个undefined错误。其次,即使我可以看到子变量确实存在,if条件也总是返回。false似乎该.vars变量只能查找根变量,而不能查找foo.test.

4

1 回答 1

1

在 FreeMarker 中,foo.bar与 相同foo["bar"],但在其中[]您可以有一个计算为字符串的任意表达式。所以你正在寻找的表达式是简单的foo[var]

顺便说一句,你的宏试图做的只是${foo[var]!bar[var]}

于 2012-09-12T21:40:11.347 回答