Thymeleaf的基本語法總結


最近用Spring boot開發一些測試平台和工具,用到頁面展示的部分,

選擇的是thymeleaf模版引擎。

頁面開發的7788快結束了,下面來總結下此過程中對thymeleaf的使用總結。

 

 

什么是Thymeleaf

 Thymeleaf是一個Java庫。它是一個XML / XHTML / HTML5模板引擎,能夠在模板文件上應用一組轉換,將程序產生的數據或者文本顯示到模板文件上。

 Thymeleaf依賴的jar包【如果你不是用Spring boot 項目中引用thymeleaf包,那你需要的jar包可能如下】

 要使用Thymeleaf,需要在我們的web應用的classpath路徑中引入相關的jar,如下:

 

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項目中,修改后要重啟

用法介紹:
<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}" 除了$以外,其他符號?

 

一、th屬性
常用th屬性解讀
html有的屬性,Thymeleaf基本都有,而常用的屬性大概有七八個。其中th屬性執行的優先級從1~8,數字越低優先級越高。

一、th:text :設置當前元素的文本內容,相同功能的還有th:utext,兩者的區別在於前者不會轉義html標簽,后者會。優先級不高:order=7
二、th:value:設置當前元素的value值,類似修改指定屬性的還有th:src,th:href。優先級不高:order=6
三、th:each:遍歷循環元素,和th:text或th:value一起使用。注意該屬性修飾的標簽位置,詳細往后看。優先級很高:order=2
四、th:if:條件判斷,類似的還有th:unless,th:switch,th:case。優先級較高:order=3
五、th:insert:代碼塊引入,類似的還有th:replace,th:include,三者的區別較大,若使用不恰當會破壞html結構,常用於公共代碼塊提取的場景。優先級最高:order=1
六、th:fragment:定義代碼塊,方便被th:insert引用。優先級最低:order=8
七、th:object:聲明變量,一般和*{}一起配合使用,達到偷懶的效果。優先級一般:order=4
八、th:attr:修改任意屬性,實際開發中用的較少,因為有豐富的其他th屬性幫忙,類似的還有th:attrappend,th:attrprepend。優先級一般:order=5


常用th屬性使用
使用Thymeleaf屬性需要注意點以下五點:

一、若要使用Thymeleaf語法,首先要聲明名稱空間: xmlns:th="http://www.thymeleaf.org"
二、設置文本內容 th:text,設置input的值 th:value,循環輸出 th:each,條件判斷 th:if,插入代碼塊 th:insert,定義代碼塊 th:fragment,聲明變量 th:object
三、th:each 的用法需要格外注意,打個比方:如果你要循環一個div中的p標簽,則th:each屬性必須放在p標簽上。若你將th:each屬性放在div上,則循環的是將整個div。
四、變量表達式中提供了很多的內置方法,該內置方法是用#開頭,請不要與#{}消息表達式弄混。
五、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM