-
标准表达式
- 变量表达式:${ }
- 选择表达式:*{ }
- URL链接表达式:@{ }
- 条件表达式:三目运算符(表达式 ?值(then):值(else))
- 默认表达式:不带then(默认值为表达式的值,表达式 ?:值(else,表达式为null时))
-
表达式工具类
- Objects工具类
/* * 当obj不为空时,返回obj,否则返回default默认值 * 其同样适用于数组、列表或集合 */ ${#objects.nullSafe(obj,default)} ${#objects.arrayNullSafe(objArray,default)} ${#objects.listNullSafe(objList,default)} ${#objects.setNullSafe(objSet,default)}
- Strings工具类
- Dates工具类
- Calendars工具类
- Numbers工具类
- Booleans工具类
- Arrays工具类
- Lists工具类
- Sets工具类
- Maps工具类
-
迭代
- 在Thymeleaf中,使用th:each标签可对集合类型进行迭代,支持的类型包括任何实现了java.util包下的List、Iterable、Enumeration、Iterator或Map的对象或者任意数组。(对Map迭代时,迭代变量是java.util.Map.Entry类型)
<tr th:each="book: ${books}"> <td th:text="${book.name}">The Frontier City</td> <td th:text="${book.price}">20.3</td> </tr>
- 迭代时,可通过状态变量获取迭代的状态信息。
<div th:each="username,stat : ${user.username}"> <span th:text="${username}"></span> <span th:text="${stat.index}"></span> <span th:text="${stat.count}"></span> <span th:text="${stat.size}"></span> <span th:text="${stat.current}"></span> <span th:text="${stat.even}"></span> <span th:text="${stat.first}"></span> <span th:text="${stat.last}"></span> </div>
- 状态变量包含的信息:
- index,当前迭代下标,从0开始
- count,当前迭代位置,从1开始
- size,迭代变量中的总计数量
- current,每次迭代的迭代变量
- even/odd,当前迭代是偶数还是奇数
- first,当前迭代的是不是第一个
- last,当前迭代的是不是最后一个
-
条件语句
- if与unless语句
- switch语句(switch-case语句)
-
模板布局
- 在Thymeleaf中使用th:include(Thymeleaf 3.0版本后不推荐使用),th:insert和th:replace属性实现模板布局
- 使用th:fragment属性定义片段
<footer th:fragment="test"> <p>Welcome to China!</p> </footer>
- 使用如下语句引用模板
<div th:include="~{footer :: test}"></div> <div th:insert="~{footer :: test}"></div> <div th:replace="~{footer :: test}"></div>
- 其中,~{…}为片段表达式,footer为被引用的模板名称(若引用本页面的片段,可略去模板名称或用this替代),test为th:fragment属性定义的片段名称(若片段不包含th:fragment属性,可使用CSS选择器替代),可简写为
<div th:include="footer :: test"></div>
- 可在th:fragment中使用参数,需要在引用时为参数传值
<div th:fragment="test(val1,val2)"> <p th:text="${val1} + ${val2}"></p> </div>
- 可简写为
<div th:fragment="test"> <p th:text="${val1} + ${val2}"></p> </div>
- 使用th:remove属性删除片段,支持的属性:
- all:删除标签及其所有子标签
- body:不删除包含的标签,但删除其所有子代
- tag:删除包含的标签,但不要删除其子标签
- all-but-first:删除除第一个之外的所有包含标签的子标签
- none
-
局部变量
- 在Thymeleaf中使用 th:with 属性来声明一个局部变量
<div th:with="user=${users[0]}"> <p>The name of the user is <span th:text="${user.username}">Jane</span>.</p> </div>
- 可在 th:with 属性中一次性定义多个变量
Thymeleaf语法
最新推荐文章于 2023-05-03 09:23:29 发布