是否可以在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] /]
答案 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') /]