在自由标记中使用三元运算符?
2022-08-31 20:09:39
我只想做这样的事情:
<a href="${ a? 'a.htm' : 'b.htm'}">
如果您使用的是 2.3.23 之前的较旧 Freemarker 版本,则可以使用此宏,它提供了一种执行三元运算的简单方法:
<#macro if if then else=""><#if if>${then}<#else>${else}</#if></#macro>
它易于使用,看起来不错,可读性很强:
<@if someBoolean "yes" "no"/>
请注意,它是 - 而不是内置指令中的一样。下面是一些其他示例。@if
#if
<!-- `else` is optional -->
<@if someBoolean "someBoolean is true"/>
<!-- expressions -->
<@if (someBoolean||otherBoolean) "hello,"+user.name 1+2+3 />
<!-- with parameter names -->
<@if someBoolean then="yes" else="no" />
<!-- first in list? -->
<#list seq as x>
<@if (x_index==0) "first" "not first"/>
<#list>
出于某种原因,如果无名参数是非布尔表达式,则无法在无名参数周围添加括号。这可以进一步提高可读性。