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 ,…
- Boolean型: true , false
- 空值: null
- 文本字符串: one , sometext , main ,…
- 字符串操作:
- 字符串连接: +
- 文字替换: |The name is ${name}|
- 数值型操作:
- 运算符: + , - , * , / , %
- 负号: -
- Boolean操作:
- 运算符: and , or
- 非运算符: ! , not
- 比较相等算法:
- 比较: > , < , >= , <= ( gt , lt , ge , le )
- 相等算法: == , != ( eq , ne )
-
条件语句:
- If-then: (if) ? (then)
- If-then-else: (if) ? (then) : (else)
- Default: (value) ?: (defaultvalue)
所有上面算法都可以随意组合和嵌套:
'User is of type ' + (${user.isAdmin()} ? 'Administrator': (${user.type} ?: 'Unknown'))
· 条件判断
(if) ? (then) if-then
(if) ? (then) : (else) if-then-else
<tr th:class="${row.even}? 'even' : 'odd'">
...
</tr>
条件表达式中的三个部分自身也可以是表达式,也可以是变量(${…}, *{…}), 消息(#{…}), URL (@{…}) 或字面量 (’…’)
条件表达式也可以使用括号来嵌套:
<tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'">
...
</tr>
else表达式也可以省略,当条件为false时,会返回null:
<tr th:class="${row.even}? 'alt'">
...
</tr>
(value) ?: (defaultvalue) Default
只有在第一个表达式返回null时,第二个表达式才会运算
信息表达式
我们之前的例子是这样的
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
home.welcome=欢迎光临本店,
但是有的时候我们需要在消息中增加变量,比如客人的名字怎么办?比如达到如下效果
<p>¡Bienvenido a nuestra tienda de comestibles, 木鱼!</p>
这样办:
home.welcome=欢迎光临本店, {0}!
<p th:utext="#{home.welcome(${session.user.name})}">
¡Bienvenido a nuestra tienda de comestibles, 木鱼!
</p>
在这里,参数可以是字符型也可是树数值型或者日期型。当然如果我们需要多个参数的话,类推即可,并且我们也可以内嵌表达式替换字符串,比如:
<p th:utext="#{${welcomeMsgKey}(${session.user.name})}">
Welcome to our grocery store, 木鱼!
</p>
变量表达式
变量表达式可以解析OGNL语法。详尽的语法信息可以访问官网:
http://commons.apache.org/ognl/
系统基本对象
OGNL有以下基本内置对象
- #ctx : the context
- #object. vars: the context variables.
- #locale : the context locale.
- #httpServletRequest : (only in Web Contexts)theHttpServletRequest object.
- #httpSession : (only in Web Contexts) the HttpSession object.
所以我们可以用如下方式引用:
Established locale country: <span th:text="${#locale.country}">US</span>.
Thymeleaf提供的对象
除了这些基本的对象,Thymeleaf将为我们提供一套实用的对象。来帮助我们我们执行常见的任务。
- #dates : 为 java.util.Date对象提供工具方法,比如:格式化,提取年月日等.
- #calendars : 类似于#dates , 但是只针对java.util.Calendar对象.
- #numbers : 为数值型对象提供工具方法。
- #strings :为String 对象提供工具方法。如: contains, startsWith, prepending/appending等。
- #objects : 为object 对象提供常用的工具方法。
- #bools : 为boolean 对象提供常用的工具方法。
- #arrays : 为arrays 对象提供常用的工具方法。
- #lists :为lists对象提供常用的工具方法。
- #sets : 为sets对象提供常用的工具方法。
- #maps :