Thymeleaf 用法大全
快速入门
下载官网文档:https://www.thymeleaf.org/
快速入门哦!可以仿照下面的步骤自己操作。
为什么选择Thymeleaf
我们知道Spring MVC本身是支持多种视图技术
。视图技术不推荐使用 JSP,官方推荐使用一些第三方的模板引擎:Thymeleaf
、FreeMarker
、Mustache
、Velocity
等各种模板引擎。
同时还为开发者提供了自定义模板扩展
的支持。它可以完全替代 JSP 。使用嵌入式Servlet容器时,请避免使用JSP,
因为使用JSP打包
后会存在一些限制
,如想使用请参考下一节:《穿越SpringBoot 》 第二章-SpringBoot Web开发 | 第2节- SpringBoot 整合Jsp页面
特点:
动静结合:
Thymeleaf 在 有网络和无网络的环境
下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果
。这是由于它支持 html 原型
,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时
会忽略未定义的标签属性
,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面
时,Thymeleaf 标签会动态地替换掉静态内容
,使页面动态显示。
开箱即用:
它提供标准
和spring标准
两种方言,可以直接套用模板实现JSTL、 OGNL
表达式效果,避免每天套模板、改jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义
的方言。
多方言支持:
Thymeleaf 提供spring标准方言和一个与SpringMVC 完美集成
的可选模块,可以快速的实现表单绑定
、属性编辑器
、国际化
等功能。
Thymeleaf的语法:
编写html模板,渲染模型中的数据把html 的名称空间,改成:xmlns:th=“http://www.thymeleaf.org
会有语法提示
,如下图官方文档:
(一)基本表达式:
(二)url
Thymeleaf对于URL的处理是通过语法@{…}来处理的。Thymeleaf支持绝对路径URL:
(三)片段
th:fragment 布局标签,定义一个代码片段,方便其它地方引用
< th:insert >是将内容插入到所属标签的内部作为子标签。
< th:replace >是将内容直接替换所在的标签。
< th:block > 是虚拟标签,不会影响网页结构。
<!--
片段引用的特殊指令:
th:insert 将内容插入到所属标签的内部作为子标签
th:replace 将内容直接替换所在的标签
<th:block> 这个标签是虚拟的标签,不会影响网页结构
-->
<th:block th:insert="~{commons/fragment::pageHeader}"/>
(四) 判断条件 文本替换
使用 th:if、th:text
(五)迭代
使用 th:each 标签
lstat称作状态变量,属性有:
index:当前迭代对象的index(从0开始计算)
count: 当前迭代对象的index(从1开始计算)
size:被迭代对象的大小
current:当前迭代变量
even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)
first:布尔值,当前循环是否是第一个
last:布尔值,当前循环是否是最后一个
也可配合 th:object 和 * {} 表达式,可以简写 ${}
<!--
关于遍历,重复哪个标签,就往那个标签上写指令
th:each 的值:
格式1: 项 : ${集合}
格式2: 项,状态变量 : ${集合}
关于状态变量,还要默认的规则:
如果没有定义,其实它也生成了, 项+'Stat'
配合 th:object 和 *{} 表达式,可以简写 ${}
-->
<ul>
<li th:each="f : ${user.friends}" th:object="${f}">
<div>
<span th:text="${f.name}">姓名</span>
<span th:text="*{lastTime}">时间</span>
</div>
</li>
</ul>