Thymeleaf模板是一个流行的模板引擎,该模板引擎采用Java语言开发;
模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在c#.php语言体系下也有模板引擎,甚至在JavaScript中也会用到模板引擎技术;
Java生态下的模板引擎有Thymeleaf、Freemarker、Velocity、Beetl(国产)等;
Thymeleaf模板既能用于web环境下,也能用于非web环境下,在非web环境下,它能直接显示模版上的静态数据,在web环境下,它能直接显示模版上的静态数据,在web环境下,它能像JSP一样从后台接收数据并替换掉模板上的静态数据;
Thymeleaf它是基于HTML的,以HTML标签位载体,Thymeleaf要寄托在HTML的标签下实现对数据的展示;
Thymeleaf的官方网站:http://www.thymeleaf.org;
springboot集成了Thymeleaf模版技术,并且springboot官方也推荐使用Thymeleaf;
集成Thymeleaf:
第一步:在maven中引入Thymeleaf的依赖,加入以下依赖配置即可:
第二步:在spring boot的核心配置文件application.properties中对Thymeleaf进行配置
#开发阶段,建议关闭thymeleaf的缓存
spring.thymeleaf.cache=false
#使用遗留的html5以去掉html标签的校验
spring.thymeleaf.mode=LEGACYHTML5
在使用springboot的过程中,如果使用thymeleaf作为模版文件,则要求html格式必须位严格的html5格式,必须有结束标签,否则会报错;
如果不想对标签进行严格认证,使用spring.thymeleaf.mode=LEGACYHTML5去掉验证去掉验证需要引入下面的依赖,否则会报错:
spring1.5默认使用的是Thymeleaf2版本 ,spring2.0默认使用的是Thymeleaf3版本;
nekohtml是一个Java语言的HTML扫描器和标签补全器,这个解析器能够扫描HTML文件并“修正”html文档中的常见错误;
nekohtml能增补缺失的父元素、自动用结束标签关闭相应的元素,修复不匹配的内嵌元素标签等;
springboot使用Thymeleaf作为视图展示,约定将模板文件放置在src/main/resource/templates目录下,静态资源放置在 src/main/resource/static目录下,html 页面html元素中加入属性:;
Thymeleaf的标准表达式
1. 标准变量表达式
语法:$ {...}
变量表达式用于访问容器(tomcat)上下文环境变量中的变量,功能和JSTL中的${}相同;
thymeleaf中的变量表达式使用${变量名}的 方式获取其中的数据;
小强 其中th:text=""是Thymeleaf的一个属性,用与文本的显示;
2. 选择变量表达式
选择变量表达式首先使用th:object来绑定后台传过来的xx对象,然后使用*来代表这个对象,后面{}中的值是此对象的属性;
选择变量表达式 *{...}是另一种类似于变量表达式${...}表示变量的方法;
选择变量表达式在执行时是在选择的对象上求解,而${...}是在上下文的标量模型上求解;
通过th:object属性指明选择变量表达式的求解对象;
小强
选择表达式首先使用 th:object来绑定后台传过来的对象,然后使用*来代表这个对象
标量表达是和选择表达式也可以混合使用
也可以不使用th:object进行对象的选择,而直接使用*{...}获取数据,
** thymeleaf与html语法也可以混合使用互不影响
3 .url表达式
语法:@{...}
URL表达式可用于
th:text
用于文本的显示
th:vaule
类似于html标签中的vaule属性,能对某元素的value属性进行赋值
th:attr
th:onclick
th:style
设置样式,th:style="'display:none;'" block
th:method
设置请求方法;
th:name
设置表单名称;
th:inline
内联文本,内联脚本;th:inline有三个取值类型{text ,javascript和none}
该属性使用内联表达式[[...]]表示变量名称,
[[${描述}]]
th:inline写在任何父标签都可以,
[[${描述}]]
内联脚本
Thymeleaf字面量
文本字面量
用单引号'...'包围的字符串为文本字面量,如
数字字面量
可以运算结果为2019
boolean字面量
true和false
null字面量
null
Thymeleaf字符串拼接
字面量拼接通过使用“|”减少字符串拼接,当两个|之间的可以像中文一样挨着写,不需要再拼接
<==>
Thymeleaf三元运算符判断
Thymeleaf运算和关系运算
算术运算:+、-、*、/、%
关系比较:>,<,>=,<=,(gt,lt,ge,le)
相等判断:==,!=(eq,ne)
Thymeleaf表达式基本对象
模板引擎提供了一组内置的对象,这些内置的对象可以直接在模板中使用,这些对象由#好开始引用
官方手册:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
#request:
相当于HttpServletRequest对象,这是3.x版本,在2.x版本中使用#httpServletRequest;
${#request.getContextPath()}
${#request.getAttribute("xx")}
#session:
相当于HttpSession对象,这是3.x版本,在2.x版本中使用#httpSession;
Thymeleaf表达式功能对象
模版引擎提供的一组功能性内置对象,可以在模板中直接使用这些对象提供的功能方法;
工作中常使用的数据类型,如集合,时间,数值,可以使用thymeleaf提供的功能性对象来处理它们;
内置功能对象前都需要加#号,内置对象一般都以s结尾;
官方手册同上
#dates: java.util.Date对象的实用方法,
#calendars: 和dates类似,但是java.util.Calendar对象;
#numbers: 格式化数字对象的实用方法;
#strings: 字符串对象的实用方法:contains,startsWith,prepending/appending等;
#objects: 对objects操作的实用方法;
#bools: 对布尔值求值的实用方法;
#arrays: 数组的实用方法;
#lists: ist的实用方法;如
#sets: set的实用方法;
#maps: map的实用方法;
#aggregates: 对数组或集合创建聚合的实用方法;