本文最后更新于11 天前,其中的信息可能已经过时,如有错误请发送邮件到kirasu@qq.com
Thymeleaf 常用语法大全
页面必须添加命名空间:
<html xmlns:th="[http://www.thymeleaf.org](http://www.thymeleaf.org)">
1. th:text 渲染文本(自动转义html标签,安全)
作用:替换标签内的文本内容
<!--后端model.addAttribute("msg","<b>你好</b>");-->
<p th:text="${msg}">静态默认文字</p>
<!--输出:<b>你好</b>,标签不会加粗-->
2. th:utext 渲染不转义文本(会解析html标签,谨慎使用,防止XSS)
<p th:utext="${msg}">默认文字</p>
<!--输出:<b>你好</b>,文字加粗-->
3. th:value 表单input的value赋值
<!--model.addAttribute("name","小明")-->
<input type="text" th:value="${name}">
4. th:href 动态超链接
<!--基础地址拼接参数-->
<a th:href="@{/user/detail(id=1,name='test')}">用户详情</a>
<!--生成 /user/detail?id=1&name=test-->
5. th:src 动态引入图片/js资源
<!--model.addAttribute("imgPath","/static/img/avatar.jpg")-->
<img th:src="${imgPath}" alt="头像">
6. th:if 条件判断,满足才渲染该标签
<!--model.addAttribute("age",18)-->
<p th:if="${age >= 18}">成年人</p>
7. th:unless 条件判断,不满足条件才渲染(等价于 !th:if)
<p th:unless="${age >=18}">未成年人</p>
8. th:each 循环遍历(列表/数组)
语法:th:each="单项对象,状态 : ${集合}" 状态变量内置属性:index(下标从0)、count(序号从1)、size、first、last
//后端
List<String> list = Arrays.asList("苹果","香蕉","橙子");
model.addAttribute("fruitList",list);
<li th:each="fruit,stat : ${fruitList}">
序号[[${stat.count}]]:[[${fruit}]]
</li>
9. th:switch / th:case 多分支判断
<!--model.addAttribute("level",2)-->
<div th:switch="${level}">
<p th:case="1">一级会员</p>
<p th:case="2">二级会员</p>
<p th:case="*">普通用户</p>
</div>
10. th:attr 批量设置标签属性
<div th:attr="title=${title},class=${cls}">测试</div>
11. th:class 动态设置css类
<!--age大于等于18,使用red样式,否则blue-->
<div th:class="${age>=18}?'red':'blue'">文字</div>
12. th:onclick 动态js事件
<button th:onclick="alert([[${tip}]])">点击弹窗</button>
13. 内联表达式 [[…]] 直接写在html文本中
<p>用户名:[[${username}]]</p>
14. 变量运算
支持 加减乘除、比较运算:> < >= <= == !=
<p th:text="${age + 2}"></p>
<p th:text="${age > 20}"></p>
15. 内置工具对象(常用)
-
strings:字符串工具
<p th:text="${#strings.length(username)}"></p>
-
lists:集合工具
<p th:text="${#lists.size(fruitList)}"></p>