Thymeleaf特点(2)- 数据类型
本文最后更新于:2 年前
这次我们学习 Thymeleaf 支持的数据类型。
字符串型: 'one text' , 'Another one!' ,…
小数及整数:0 , 34 , 3.0 , 12.3 ,…
布尔值:true , false
空值:null
文字标记:one text , 34 ,…
字符串型
就像这样:
1 |
|
字符串型的数据需要用单引号引起来,不能用双引号。如果单引号也是字符串的一部分,必须要用转义字符 \' 。
数字型
就像这样:
1 |
|
纯正的数字不需要任何单引号或双引号。此处的双引号是 th:text 的语法要求。
布尔型
就像这样:
1 |
|
双引号内的值若是 false ,该元素不会被解析;只有是 true 时元素才会显示在浏览器上。
和下列代码等效:
1 |
|
它们的区别是 == false 在大括号外的是 Thymeleaf 的语法。而 == false 在大括号内的是OGNL/SpringEL 的语法。
空值
就像这样:
1 |
|
null 值可以用来比较。
文字标记
数字、布尔值、空值实际上是文字标记的一种特殊情况。那文字标记有什么优点呢?
1 |
|
可以省去单引号。
数据类型是值和操作的集合,接下来讲一下基本操作。
字符串拼接 +
无论是文本值还是变量值,都可以用 + 进行拼接。
1 |
|
文字替换 |
用文字替换实现上述字符串拼接,等效于
1 |
|
也可以混着用
1 |
|
但是文字替换操作仅限 ${…} , *{…} , #{…} 三个表达式。下面的代码会抛出异常。
1 |
|
给 The name are 用单引号引起是可行的。
1 |
|
算术运算 + , - , * , / 和 %
其中 / 有文本别名 div , % 有文本别名 mod ,在实际代码中两者等效。
1 |
|
算术运算就是数学运算。
1 |
|
当把 == 放进花括号中,代码将由 OGNL 执行,之前学过了。
比较 > < >= <= ! == !=
> (gt) ,<(lt) ,>=(ge) ,<=(le) ,!(not) ,==(eq) ,!=(neq / ne)
符号和英文别名等效。
要注意,>(gt) 和 <(lt) 不能直接用在属性值的比较中,要用 > 和 < 代替。
1 |
|
; 分割前后两个比较值,字符串也可比较。
1 |
|
通过比较选择可快速选择显示哪个字符串,(${user.enname} == 'CJ') 为 True 时,显示 : 前的字符串 ; 为 False 时,显示 : 后的字符串。
条件表达式
If-then-else: (if) ? (then) : (else)
1 |
|
条件成立就选 'even' 否则选 'odd' 。如果省去(else),没有 : 'odd' ,那么当条件不成立时则会返回 null 。
(if) (then) (else) 可以是 ${…} 、 *{…} 、 #{…} 、 @{…} 、 '…'
条件表达式可以嵌套:
1 |
|
Default: (value) ?: (defaultvalue)
1 |
|
默认表达式是一种特殊的条件表达式,当 (value) 值为 null 时,选择 : 后面的值,否则就选择其本身的值,如果本身值为 false ,就选择 false 。默认表达式也可以嵌套。
1 |
|
先判断用户有没有中文名,有就显示中文名;否则再去判断有没有英文名,有就显示英文名;如果都没有就显示佚名。
把 佚名 放外面,用 _ 替代 '佚名':
1 |
|
也会有上面的效果,这样做的好处是更简洁和通用(官方说的)。
所有这些特点都可以被组合和嵌套
'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))
除了处理表达式的特点,thymeleaf 还有预处理表达式的特点。
如果有一个配置文件 Messages_fr.properties ,保存了一个 OGNL 表达式,是用来指定语言的静态方法。
1 |
|
当我们根据本地设置来编写代码时,首先要通过预处理选择该表达式:
1 |
|
相比(不使用预处理)
1 |
|
而言,要简洁的多,预处理符号 __ 可用 \_\_ 代替。双花括号是格式化的语法,仅适用于 ${…} 和 *{…} 。
— 【参考资料 —— Thymeleaf文档20181029 - 29 October 2018】
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!