最近用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