Thymeleaf 教程
标准表达式语法
-
简单的表达式
-
变量表达式: $
-
选择变量表达式: *
tips
*{...} 选择表达式【和 ${}在功能上是一样的】[[${...}]] ,双中括号,就是 th:text 会转义
[(${...})] ,中括号小括号,就是 th:utext 不会转义
-
消息表达式(获取国际化内容的): #
-
连接 url表达式: @
-
代码判断表达式: ~
-
-
字面值
- 文本类型 : 'one text' , 'Another one!' ,…
- 数字类型 : 0 , 34 , 3.0 , 12.3 ,…
- 布尔类型 : true , false
- 空值类型 : null
- 文本标记 : one , sometext , main ,…
-
文本处理
- 字符串连接:+
- 文本替换:|The name is ${name}|
-
算数运算符
- 二进制运算符:+,-,* ,/,%
-
负号
- 一元运算符:-
-
布尔运算符:
- 二进制运算符:and,or
- 不二否定(一元运算符):!,not
-
比较和相等运算符:
- 比较运算符:>,<,>=,<= (gt,lt,ge,le)
- 相等运算符:==,!= (eq,ne/neq)
-
条件运算(三元运算也支持)
If-then: (if) ? (then)
If-then-else: (if) ? (then) : (else)
Default: (value) ?: (defaultvalue) -
特别的字符
- 空操作符:_
-
If-then: (if) ? (then)
-
If-then-else: (if) ? (then) : (else)
-
Default: (value) ?: (defaultvalue)
th:each
<table>
<tr>
<th>NAME</th>
<th>PRICE</th>
<th>IN STOCK</th>
</tr>
<tr th:each="prod : ${prods}">
<td th:text="${prod.name}">Onions</td>
<td th:text="${prod.price}">2.41</td>
<td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
</table>
- ${prods}:需要被循环的变量
- prod:循环变量
<table>
<tr>
<th>NAME</th>
<th>PRICE</th>
<th>IN STOCK</th>
</tr>
<tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'">
<td th:text="${prod.name}">Onions</td>
<td th:text="${prod.price}">2.41</td>
<td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
</table>
- iterStat 迭代状态变量
th:case
<div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="#{roles.manager}">User is a manager</p>
</div>
<div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="#{roles.manager}">User is a manager</p>
<p th:case="*">User is some other thing</p>
</div>
片段包含
th:insert 将简单的插入指定宿主标签的标签体中。
th:replace 实际上用指定的片段替换其宿主标签。
th:inlude 类似th:insert,而不是插入片段,它直插入片段的内容
<footer th:fragment="copy">
© 2011 The Good Thymes Virtual Grocery
</footer>
<body>
<div th:insert="footer :: copy"></div>
<div th:replace="footer :: copy"></div>
<div th:include="footer :: copy"></div>
</body>
<body>
<div>
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
</div>
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
<div>
© 2011 The Good Thymes Virtual Grocery
</div>
</body>
内置对象
- 在对上下文变量计算OGNL表达式时,一些对象可用于表达式,以获得更高的灵活性。这些对象将以#符号开始引用(按照OGNL标准)
- #ctx : the context object(上写问对象).
- #vars: the context variables(上下文变量).
- #locale : the context locale(上写区域设置).
- #request : (only in Web Contexts) the HttpServletRequest object(仅在web上下文中 HttpServletRequest对象).
- #response : (only in Web Contexts) the HttpServletResponse object(仅在web上下文中 HttpServletResponse对象).
- #session : (only in Web Contexts) the HttpSession object(仅在web上写文中 HttpSession对象).
- #servletContext : (only in Web Contexts) the ServletContext object(仅在web上下文中 ServletContext对象).
内置工具对象
- #execInfo : 有关正在处理的模板的信息
- #messages : 用在变量表达式总获取外部化消息的方法,与#{}语法获得的方式相同.
- #uris : 转义 url/url部分的方法.
- #conversions : 执行配置的转换服务(如果有的话)的方法.
- #dates : java.util.Date 对象的方法:格式化,组件提取等.
- #calendars : 类似 #dates , 但对于 java.util.Calendar 对象.
- #numbers : 用于格式化数字对象的方法.
- #strings : String对象的方法: contains, startsWith, prepending/appending, etc.
- #objects : objects的方法.
- #object : 用来获取的它内置对象.
- #bools : 布尔对象方法.
- #arrays : 数组的方法.
- #lists : methods for lists.
- #sets : methods for sets.
- #maps : methods for maps.
- #aggregates : 在数组或集合上创建聚合的方法.
- #ids : 处理可能重复的id属性的方法(例如,作为迭代的结果).