最近用Spring boot开发一些测试平台和工具,用到页面展现的部分,html
选择的是thymeleaf模版引擎。java
页面开发的7788快结束了,下面来总结下此过程当中对thymeleaf的使用总结。web
什么是Thymeleafexpress
Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,可以在模板文件上应用一组转换,将程序产生的数据或者文本显示到模板文件上。api
Thymeleaf依赖的jar包【若是你不是用Spring boot 项目中引用thymeleaf包,那你须要的jar包可能以下】app
要使用Thymeleaf,须要在咱们的web应用的classpath路径中引入相关的jar,以下:less
thymeleaf-2.1.3.RELEASE.jar
ognl-3.0.6.jar
javassist-3.16.1-GA.jar
unbescape-1.0.jar
servlet-api-2.5.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
log4j-1.2.15.jar
mail-1.4.jar
activation-1.1.jar工具
那下面说说Spring boot+thymeleaf 怎么建立页面,向页面上传数据测试
使用thymeleaf只须要将文件放入目录 classpath:/tempaltes/ 文件后缀是.html
注意在之前的传统web项目中:静态资源修改后,是不须要重启的;可是Spring boot项目中,修改后要重启url
用法介绍:
<p th:text="${welcome}" >welcome to my thymeleaf....</p>
以上,先从${welcome}中取值
th就是替换原来的html的值: th:html属性名=值;
th:xx 【参见第十章】 Attribute Pre
th:text 获取文本值 显示将hello渲染为h1后的值
th:utext 获取文本值(不转义) 显示<h1>hello</h1>
符号:
th:text="${welcome}" 除了$之外,其余符号?
1、th属性
经常使用th属性解读
html有的属性,Thymeleaf基本都有,而经常使用的属性大概有七八个。其中th属性执行的优先级从1~8,数字越低优先级越高。
1、th:text :设置当前元素的文本内容,相同功能的还有th:utext,二者的区别在于前者不会转义html标签,后者会。优先级不高:order=7
2、th:value:设置当前元素的value值,相似修改指定属性的还有th:src,th:href。优先级不高:order=6
3、th:each:遍历循环元素,和th:text或th:value一块儿使用。注意该属性修饰的标签位置,详细日后看。优先级很高:order=2
4、th:if:条件判断,相似的还有th:unless,th:switch,th:case。优先级较高:order=3
5、th:insert:代码块引入,相似的还有th:replace,th:include,三者的区别较大,若使用不恰当会破坏html结构,经常使用于公共代码块提取的场景。优先级最高:order=1
6、th:fragment:定义代码块,方便被th:insert引用。优先级最低:order=8
7、th:object:声明变量,通常和*{}一块儿配合使用,达到偷懒的效果。优先级通常:order=4
8、th:attr:修改任意属性,实际开发中用的较少,由于有丰富的其余th属性帮忙,相似的还有th:attrappend,th:attrprepend。优先级通常:order=5
经常使用th属性使用
使用Thymeleaf属性须要注意点如下五点:
1、若要使用Thymeleaf语法,首先要声明名称空间: 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 的用法须要格外注意,打个比方:若是你要循环一个div中的p标签,则th:each属性必须放在p标签上。若你将th:each属性放在div上,则循环的是将整个div。
4、变量表达式中提供了不少的内置方法,该内置方法是用#开头,请不要与#{}消息表达式弄混。
5、th:insert,th:replace,th:include 三种插入代码块的效果类似,但区别很大。
thymeleaf 基本语法
标准表达式语法
1. 简单表达式 simple expressions
${...} 变量表达式 Variable Expressions
*{...} 选择变量表达式 Selection Variable Expressions
#{...} 消息表达式 Message Expressions
@{...} 连接url表达式 Link URL Expressions
~{...} 代码块表达式 Fragment Expressions
字面量
'one text','another text'...文本
0,1,3.0,12.45... 数值
true false 布尔类型
null 空
one,sometext,main 文本字符
文本操做
+ 字符串链接
|The name is ${name}| 字符串链接
算数运算
+ - * / % 二元运算符
- 负号 一元运算符
布尔操做
and or 二元操做符
! not 非 一元操做符
关系操做符
> < >= <= gt lt ge le
== != eq ne
条件判断
(if) ? (then) if-then
(if) ? (then):(else) if-then-else