4.12 默认表达式(猫王运算符)

默认表达式指的是一种特殊的条件值。它没有then部分,等价于某些语言里的猫王运算符,比如Groovy。你可以指定两个表达式:如果第一个的值不是null,它就会使用第一个表达式,但是如果第一个表达式的值为null,那它就会使用第二个表达式。

让我们在用户资料页面使用它:

<div th:object="${session.user}">
  ...
  <p>Age: <span th:text="*{age}?: '(no age specified)'">27</span>.</p>
</div>

如你所见,运算符是?:。我们用它来指定一个默认值(这里是一个字面量值)。只要*{age}的结果为null,默认值就会被使用。因此,这等价于:

<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>

Last updated