1.常用属性
2.示例演示
2.1 声明与引入公共片段
定义公共部分public.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>公共部分</title>
<div th:fragment="header_common">
这是th:fragment声明公共片段
</div>
<div id="header_common_id">
<span>这是id选择器声明公共片段</span>
</div>
</head>
</h
- 引用公共部分:
success.html
<!--header : 公共片段所在模板的文件名-->
<!--header_common 声明代码片段名-->
<div th:replace="public::header_common"></div>
<h1 th:replace="public:: #header_common_id"></h1>
<!--th:insert 和 th:replace的区别 th:insert和th:replace都可以引入片段,
两者的区别在于 th:insert: 保留引入时使用的标签
th:replace:不保留引入时使用的标签, 将声明片段直接覆盖当前引用标签-->
<h1 th:insert="public::#header_common_id"></h1>
2.2 迭代 th:each
@RequestMapping("/study")
public String study(Map<String, Object> map, HttpServletRequest request){
List<User> userList = new ArrayList<>();
userList.add(new User("蔡文姬",12));
userList.add(new User("瑶",16));
userList.add(new User("小明",14));
map.put("userList",userList);
return "study";
取出迭代值:
<!--th:each-->
<table border="1px">
<tr>
<th>姓名</th>
</tr>
<tr th:each="user: ${userList}">
<!--每次迭代都会生成一个当前标签-->
<td th:text="${user}">wwj</td>
</tr>
</table>
<hr/>
<ur>
<!--作用在同一个标签上, 每次迭代生成一个当前标签-->
<li th:each="user: ${userList}" th:text="${user}"></li>
</ur>
2.3 th:if和unless
<h3 th:if="not ${#lists.isEmpty(userList)}">th:if判断,如果此文字显示说明有值</h3>
<h3 th:unless="${#lists.isEmpty(userList)}">th:unless判断,如果此文字显示说明有值</h3>
2.4 swith th:case
@RequestMapping("/study")
public String study(Map<String, Object> map, HttpServletRequest request){
List<User> userList = new ArrayList<>();
userList.add(new User("蔡文姬",12));
userList.add(new User("瑶",16));
userList.add(new User("小明",14));
map.put("userList",userList);
map.put("sex",1);
map.put("man",2);
return "study";
<div th:switch="${sex}">
<p th:case="1">女</p>
<p th:case="${man}">男</p>
<p th:case="*">未知</p>
></div>
2.5显示标签体内容
- th:text 转义特殊字符, 即 h1标签以文本显示出来
- th:utext 不转义特殊字符, 即 h1 标签展现出本来效果
@RequestMapping("/study")
public String study(Map<String, Object> map, HttpServletRequest request){
List<User> userList = new ArrayList<>();
userList.add(new User("蔡文姬",12));
userList.add(new User("瑶",16));
userList.add(new User("小明",14));
map.put("userList",userList);
map.put("sex",1);
map.put("man",2);
map.put("desc","好好学习啊<h1>静静</h1>");
return "study";
}
<hr/>
<div th:text="${desc}"></div>
<div th:utext="${desc}"></div>
运行结果:
补充:Thymeleaf 行内表达式双中括号: [[表达式]] (就是不在标签上使用属性,参考12 Inlining)
<input type="checkbox" /> [[${desc}]]
<p>Hello, [[${desc}]] 。。。</p>