#条件表达式
条件表达式condition?then:else
根据conditon
的值,只会有then
,else
中的一个表达式被求值。conditon
为true
->then
, condition
为false
->else
。
<tr th:class="${row.even}? 'even' : 'odd'">
...
</tr>
其中条件表达式的三个部分condition?then:else
本身都是表达式,所以可以是变量(${...}
,*{...}
), 消息(#{...}
), URL(@{...}
)或者是字面量('...'
,123
)。
通过使用括号()
实现条件表达式嵌套
<tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'">
...
</tr>
else
部分可以被省略,此时如果conditon
为false
,null
被返回
<tr th:class="${row.even}? 'alt'">
...
</tr>
#默认表达式
默认表达式是条件表达式的一种变种conditon ?: else(default)
,没有then
的部分,else
部分只有在condition
为null
的时候才会被求值
<div th:object="${session.user}">
...
<p>Age: <span th:text="*{age}?: '(no age specified)'">27</span>.</p>
</div>
其等价于
<p>Age: <span th:text="*{age != null}? *{age} : '(no age specified)'">27</span>.</p>
默认表达式同样支持嵌套
<p>
Name:
<span th:text="*{firstName}?: (*{admin}? 'Admin' : #{default.username})">Sebastian</span>
</p>