freemarker 宏参数内的 if-else 语句?
If-else statement inside a parameter of a freemarker macro?
是否可以在 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] /]
更新: 从 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') /]
是否可以在 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] /]
更新: 从 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') /]