0

文字列と入力変数の連結の補間を返すことができるFreeMarkerマクロを作成しようとしています。

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

残念ながら、それは機能しません。まず、${.vars["bar." + var]}エラーが発生しundefinedます。次に、サブ変数が存在することがわかった場合でも、if条件は常に返されます。変数はルート変数のみを検索できfalse、のようなサブ変数は検索できないようです。.varsfoo.test

4

1 に答える 1

1

FreeMarkerでは、はとfoo.bar同じですfoo["bar"]が、内部に文字列に評価さ[]れる任意の式を含めることができます。したがって、探している式は単純です。foo[var]

ところで、あなたのマクロがやろうとしているのはただ${foo[var]!bar[var]}

于 2012-09-12T21:40:11.347 に答える