# 4.12 默认表达式（猫王运算符）

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

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

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

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

```markup
<p>Age: <span th:text="*{age != null}? *{age} : '(no age specified)'">27</span>.</p>
```

和条件值一样，它们可以在括号里包含嵌套的表达式：

```markup
<p>
  Name: 
  <span th:text="*{firstName}?: (*{admin}? 'Admin' : #{default.username})">Sebastian</span>
</p>
```
