版權聲明:本文爲 小異常 原創文章,非商用自由轉載-保持署名-註明出處,謝謝!
本文網址:https://blog.csdn.net/sun8112133/article/details/106991795
本篇博客主要來總結 Thymeleaf 模板引擎 中的常用表達式,並結合案例幫助大家快速掌握:
- 變量表達式;
- 消息表達式;
- 選擇表達式;
- 鏈接表達式;
- 分段表達式;
- 內聯表達式。
一、變量表達式
變量表達式 是最常用的一種表達式,它主要可以獲取變量的值,它的底層使用了 OGNL 表達式(有關 OGNL 表達式的知識大家可以參考我之前寫的博客:OGNL表達式)。
1、語法
${...}
2、案例
<!-- 獲取 name 變量的值 -->
<p th:text="${name}"></p>
二、消息表達式
消息表達式 主要是用於讀取屬性文件(
.properties
)中的值,它常常用於國際化,不過我們的產品一般不會出口,所以一般情況下我們用不到。
1、語法
#{...}
2、案例
<!-- 讀取屬性文件中 key 爲 name 的值 -->
<p th:text="#{name}"></p>
注意: 我們必須先要配置屬性文件所在位置,在項目配置文件中配置以下內容:
spring:
messages:
basename: msg
然後在 resource
目錄下創建 msg.properties
文件,並在屬性文件中寫入以下內容:
name=ZS
我們此時就能通過 #{name}
取到 key 爲 name 的值了。之前我寫過一篇有關 《Thymeleaf 讀取屬性文件中的值》 的博客,大家可以參考。
三、選擇表達式
選擇表達式 我們也稱爲是星號表達式,它與 變量表達式 的區別是:變量表達式 的對象取的是整個上下文中的變量,而 選擇表達式 的對象取的是當前對象中的變量。這樣做的好處是隻需要在當前對象中取,不需要通過上下文去取,在一定程度上提高了執行效率,這也是性能上的一種優化。
1、語法
*{...}
2、案例
<!-- book 中從上下文中取的一個變量 -->
<div th:object="${book}">
<!-- title 是 book 中的屬性 -->
<span th:text="*{title}"></span>
</div>
其中
th:object
的意思是:用來接受後臺傳過來的對象。
四、鏈接表達式
鏈接表達式 主要在頁面中有鏈接的地方使用。
1、語法
@{...}
2、案例
-
相對路徑(相對當前自身路徑):
<a th:href="@{../result}">...</a>
-
相對路徑(相對服務器):
<a th:href="@{~/result}">...</a>
-
相對路徑(相對協議):
<a th:href="@{//localhost:8888/result}">...</a>
-
絕對路徑:
<a th:href="@{http://localhost:8888/result}">...</a>
五、分段表達式
分段表達式 主要用於模板佈局時的引用。也就是在一個頁面中引入另一個頁面中的內容。
1、語法
~{...}
2、案例
我們準備兩個頁面,分別是
result.html
和foot.html
,我們在result.html
中引入foot.html
的內容。
-
result.html
<body> <p>這是 result.html 頁面</p> <div th:insert="~{foot :: copy}"></div> </body>
-
foot.html
<body> <div th:fragment="copy"> © 2020 <a href="http://www.baidu.com">百度</a> </div> </body>
-
瀏覽器顯示效果
-
頁面源代碼
六、內聯表達式
內聯表達式 可以將表達式放到文本中,這種方式我們稱爲是 內聯,而放到文本中的表達式我們把它稱爲是 內聯表達式。
大家可以考慮一個問題,如果有些文本內容是:
[1,2,3],[4,5]
這一類的內容,Thymeleaf 也會把它解析成 內聯表達式,這顯然不是我們想要的效果,那我們該怎麼辦呢?(有關 內聯表達式 的知識大家可以參考我寫的博客:內聯表達式)。
1、語法
[[...]] 或 [(...)]
注意: [[...]]
或 [(...)]
分別對應於 th:text
和 th:utext
。
2、案例
假設
msg
的值爲This is <b>ZhangSan! </b>
。
<p>():The message is "[(${name})]"</p>
<p>[]:The message is "[[${name}]]"</p>