Thymeleaf之表達式

版權聲明:本文爲 小異常 原創文章,非商用自由轉載-保持署名-註明出處,謝謝!
本文網址:https://blog.csdn.net/sun8112133/article/details/106991795




本篇博客主要來總結 Thymeleaf 模板引擎 中的常用表達式,並結合案例幫助大家快速掌握:

  1. 變量表達式;
  2. 消息表達式;
  3. 選擇表達式;
  4. 鏈接表達式;
  5. 分段表達式;
  6. 內聯表達式。

一、變量表達式

變量表達式 是最常用的一種表達式,它主要可以獲取變量的值,它的底層使用了 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.htmlfoot.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">
    		&copy; 2020 <a href="http://www.baidu.com">百度</a>
    	</div>
    </body>
    
  • 瀏覽器顯示效果

    瀏覽器顯示效果

  • 頁面源代碼

    頁面源代碼



六、內聯表達式

內聯表達式 可以將表達式放到文本中,這種方式我們稱爲是 內聯,而放到文本中的表達式我們把它稱爲是 內聯表達式

大家可以考慮一個問題,如果有些文本內容是:[1,2,3],[4,5] 這一類的內容,Thymeleaf 也會把它解析成 內聯表達式,這顯然不是我們想要的效果,那我們該怎麼辦呢?(有關 內聯表達式 的知識大家可以參考我寫的博客:內聯表達式)。

1、語法

[[...]] 或 [(...)]

注意: [[...]][(...)] 分別對應於 th:textth:utext


2、案例

假設 msg 的值爲 This is <b>ZhangSan! </b>

<p>():The message is "[(${name})]"</p>
<p>[]:The message is "[[${name}]]"</p>

內聯瀏覽器效果

內聯源代碼



博客中若有不恰當的地方,請您一定要告訴我。前路崎嶇,望我們可以互相幫助,並肩前行!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章