thymeleaf3.0的使用
一、常用模板引擎对比简介jspJava Server Pages,动态网页技术,由应用服务器中的JSP引擎来编译和执行,再将生成的整个页面返回给客户端。支持表达式语言(EL、JSTL)。因为其是在服务器端渲染的,消耗性能,所以springboot项目中不在推荐使用jspfreemarker文件一般保存为 xxx.ftl,严格依赖MVC模式,不依赖Servlet容器(...
文章目录
一、常用模板引擎对比
简介 | |
---|---|
jsp | Java Server Pages ,动态网页技术,由应用服务器中的JSP引擎来编译和执行,再将生成的整个页面返回给客户端。支持表达式语言(EL、JSTL)。因为其是在服务器端渲染的,消耗性能,所以springboot项目中不在推荐使用jsp |
freemarker | 文件一般保存为 xxx.ftl ,严格依赖MVC模式,不依赖Servlet容器(不占用JVM内存),其语法对比thymeleaf较为复杂 |
thymeleaf | springboot主推的模板引擎,轻量级的模板引擎(负责逻辑业务的不推荐,解析DOM或者XML会占用多的内存)。可以直接在浏览器中打开且正确显示,表达式并不会影响,模板页面文件以html结尾 |
二、thymeleaf标签
①th:text
设置当前元素的文本内容。类似修改制定属性的还有th:utext
,区别在于后者不会转义html
标签
②th:value
设置当前元素的value
值。类似的还有th:src
、th:href
③th:each
循环遍历元素。th:each="item : ${collection}"
,然后使用th:text="${item}"
赋值表达式给标签赋值
④th:if
条件判断。类似th:unless
、th:switch
、th:case
。判断不为空才显示th:if="${not #strings.isEmpty(result)}"
⑤th:insert
代码块引入。,类似的有th:replace,th:include;th:insert插入到当前标签下,th:insert:保留自己的主标签,保留th:fragment的主标签。tth:replace:不要自己的主标签,保留th:fragment的主标签。th:include:不要自己的主标签,保留th:fragment的主标签。(官方3.0后不推荐使用)。
⑥th:fragment
定义代码块
⑦th:object
声明变量。一般和*{}
一起配合使用
三、thymeleaf表达式
①${…}:变量表达式
常用内置对象
说明 | |
---|---|
ctx | 上下文对象 |
vars | 上下文变量 |
locale | 上下文的语言对象 |
request | 获取HttpServletRequest对象 |
response | 获取HttpServletResponse对象 |
session | 获取HttpSession对象 |
常用内置方法
说明 | |
---|---|
strings | 字符串格式化方法,如equals、equalsIgnoreCase、length、trim、toUpperCase、toLowerCase、indexOf、substring、replace、startWith、endsWith、contains、containsIgnoreCase等 |
numbers | formatDecimal |
bools | isTrue、isFalse |
arrays | toArray,length,isEmpty,contains,containsAll等 |
list、sets | toList,size,isEmpty,contains,containsAll,sort等 |
maps | size,isEmpty,containsKey,containsValue等 |
dates | format,year,month,hour,createNow等 |
②@{…}:链接表达式
可以动态获取项目路径
③#{…}:消息表达式
④~{…}:代码块表达式
支持两种语法结构
推荐:~{templatename::fragmentname}
支持:~{templatename::#id}
⑤*{…}:选择变量表达式
多用于和th:object
结合使用
四、使用thymeleaf需要注意
1、声明名称空间:xmlns:th="http://www.thymeleaf.org
2、设置文本内容th:text
,设置input
的值th:value
,循环输出th:each
,条件判断th:if
,插入代码块th:insert
,定义代码块th:fragment
,声明变量th:object
3、th:each
放在需要被循环的标签上。
4、变量表达式中提供了很多的内置方法,该内置方法是用#
开头,请不要与#{}
消息表达式弄混。
5、th:insert
、th:replace
、th:include
三种插入代码块的效果相似,但区别很大。
五、SpringBoot应用中使用thymeleaf
①引入thymeleaf
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
②添加配置
#通常thymeleaf默认的编码是HTML5,此时thymeleaf对一些标签的校验非常严格,通常我们需要添加配置spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.mode=LEGACYHTML5
#关闭thymeleaf缓存 开发时使用 否则没有实时画面
spring.thymeleaf.cache=false
③添加nekohtml
依赖
设置了spring.thymeleaf.mode=LEGACYHTML5
后就需要引入搭配一个额外的库NekoHTML
。
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.15</version>
</dependency>
更多推荐
所有评论(0)