if-else语句在freemarker宏的参数内?

时间:2015-04-17 08:37:48

标签: java if-statement freemarker

是否可以在freemarker宏的参数中包含if / else语句?

我现在有:

[#if myForm.id==0]
[#assign action = "add"]
[#else]
[#assign action = "change"]
[/#if]
[@printForm action  /]

这是很多代码行,可以通过将if / else构造作为参数来缩短这一点,例如:

[@printForm [if]add[#else]change[/#if]  /]

1 个答案:

答案 0 :(得分:2)

更新:从FreeMarker 2.3.23开始,您应该将condition?then(whenTrue, whenFalse)用于三元运算符。这可能有非字符串结果,并且懒惰评估其参数。

在FreeMarker中,您可以将其作为布尔格式化任务进行处理:[@printForm (myForm.id == 0)?string('add', 'change') /]

更新: 这是一个完整的工作示例:

[#ftl]
${.version}

[#macro printForm s]
s: ${s}
[/#macro] 

[#assign myForm = { "id": 0 } ]

[@printForm (myForm.id == 0)?string('add', 'change') /]