Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发.它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者.
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等.Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模.你可以使用它创建经过验证的XML与HTML模板,相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可.接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑.
1. 概述Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP.相较与其他的模板引擎,它有如下三个极吸引人的特点.
-
1️⃣.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果.这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板 + 数据的展示方式.浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示.
-
2️⃣.Thymeleaf 开箱即用的特性.它提供标准和 Spring 标准两种方言,可以直接套用模板实现 JSTL、 OGNL 表达式效果,避免每天套模板、改 JSTL、改标签的困扰,同时开发人员也可以扩展和创建自定义的方言.
-
3️⃣.Thymeleaf 提供 Spring 标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能.
如果希望以 Jar 形式发布模块则尽量不要使用 JSP 相关知识,这是因为 JSP 在内嵌的 Servlet 容器上运行有一些问题 (内嵌 Tomcat、 Jetty 不支持 Jar 形式运行 JSP,Undertow 不支持 JSP).
Spring Boot 中推荐使用 Thymeleaf 作为模板引擎,因为 Thymeleaf 提供了完美的 Spring MVC 支持.
Spring Boot 提供了大量模板引擎,包括:
- FreeMarker
- Groovy
- Mustache
- Thymeleaf
- Velocity
- Beetl
修改 html 标签用于引入 thymeleaf 引擎,这样才可以在其他标签里使用 th:*
语法,这是下面语法的前提.
2. 获取变量值
name
可以看出获取变量值用 $
符号,对于javaBean的话使用 变量名.属性名
方式获取,这点和 EL
表达式一样.
另外 $
表达式只能写在th标签内部,不然不会生效,上面例子就是使用 th:text
标签的值替换 p
标签里面的值,至于 p
里面的原有的值只是为了给前端开发时做展示用的.这样的话很好的做到了前后端分离.
Thymeleaf 对于 URL 的处理是通过语法 @{…}
来处理的
绝对路径
相对路径
Content路径,默认访问static下的css文件夹
类似的标签有:th:href
和 th:src
很多时候可能我们只需要对一大段文字中的某一处地方进行替换,可以通过字符串拼接操作完成.
一种更简洁的方式是:
当然这种形式限制比较多,|…|中只能包含变量表达式${…},不能包含其他常量、条件表达式等。
5. 运算符在表达式中可以使用各类算术运算符,例如+, -, *, /, %
th:with="isEven=(${prodStat.count} % 2 == 0)"
逻辑运算符>,
- 异常解决及问题分析博客系列汇总
- SpringBoot2.x系列教程汇总-从入门到精通
- 跟一一哥学Java系列之从入门到精通教程汇总
- 高薪程序员&面试题精讲系列156之你还有什么要问的吗?你平时怎么学习?
- 高薪程序员&面试题精讲系列155之项目介绍,说说你最熟悉的项目,遇到了哪些困难?
- 高薪程序员&面试题精讲系列154之电商专题(下)-你做过秒杀吗?怎么设计秒杀?订单详情页有哪些要求?
- 高薪程序员&面试题精讲系列153之电商专题(中)-你的电商项目订单是如何设计的?支付流程你熟悉吗?金额是怎么设计的?
- 高薪程序员&面试题精讲系列152之电商专题(中)-SPU是怎么回事?SPU如何设计?SKU又是什么呢?SN你知道吗?
- 高薪程序员&面试题精讲系列151之电商专题(中)-你做过电商项目吗?说说购物车的实现流程吧
- 高薪程序员&面试题精讲系列150之电商专题(上)-你们的电商项目有什么特色?是B2B还是B2C、还是C2C的?直播电商你了解吗?