【问题标题】:Freemarker: Dynamic interpolation of sub variablesFreemarker:子变量的动态插值
【发布时间】:2012-09-12 16:43:00
【问题描述】:

我正在尝试创建一个 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 之类的子变量。

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    在 FreeMarker 中,foo.barfoo["bar"] 相同,但在 [] 中,您可以使用任意表达式计算 为字符串。所以你要找的表达式就是foo[var]

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

    【讨论】:

    • 对不起。我希望它现在已修复。
    猜你喜欢
    • 2014-07-28
    • 2016-07-08
    • 2010-11-08
    • 1970-01-01
    • 2020-01-11
    • 2012-03-28
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多