4 标准表达式语法
我们将暂停开发我们的虚拟杂货店,来学习Thymeleaf标准方言里最重要的部分:Thymeleaf标准表达式语法。
我们已经看过了两种有效的表达属性值的语法:信息和变量表达式。如下:
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
<p>Today is: <span th:text="${today}">13 february 2011</span></p>
然而,还有更多类型的表达式,甚至已经学习过的表达式也还有更多有趣的细节需要学习。首先,让我们看看对标准表达式特性的总结:
- 简单表达式:
- 变量表达式:
${...}
- 选择变量表达式:
*{...}
- 信息表达式:
#{...}
- 链接URL表达式:
@{...}
- 分段表达式:
~{...}
- 变量表达式:
- 字面量
- 文本字面量: ‘one text’, ‘Another one!’,…
- 数字字面量:
0
,34
,3.0
,12.3
,… - 布尔字面量:
true
,false
- Null字面量:
null
- 字面量标记:
one
,sometext
,main
,…
- 文本运算:
- 字符串拼接:
+
- 字面量置换:
|The name is ${name}|
- 字符串拼接:
- 算术运算:
- 二元运算符:
+
,-
,*
,/
,%
- 负号(一元运算符): (unary operator):
-
- 二元运算符:
- 布尔运算:
- 二元运算符:
and
,or
- 布尔非(一元运算符):
!
,not
- 二元运算符:
- 比较和相等:
- 比较:
>
,<
,>=
,<=
(gt
,lt
,ge
,le
) - 相等运算符:
==
,!=
(eq
,ne
)
- 比较:
- 条件运算符:
- If-then:
(if) ? (then)
- If-then-else:
(if) ? (then) : (else)
- Default:
(value) ?: (defaultvalue)
- If-then:
- 特殊标记:
- 无操作:
_
- 无操作:
所有这些特性可以结合或者嵌套:
'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))