更新時(shí)間:2021-06-11 14:42:25 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1493次
Thymeleaf是一個(gè)用于Web和獨(dú)立Java環(huán)境的模板引擎,能夠處理HTML、XML、JavaScript、CSS甚至純文本。能輕易的與Spring MVC等Web框架進(jìn)行集成作為Web應(yīng)用的模板引擎。與其它模板引擎(比如FreeMaker)相比,Thymeleaf最大的特點(diǎn)是能夠直接在瀏覽器中打開(kāi)并正確顯示模板頁(yè)面,而不需要啟動(dòng)整個(gè)Web應(yīng)用(更加方便前后端分離,比如方便類(lèi)似VUE前端設(shè)計(jì)頁(yè)面),拋棄JSP吧。
Thymeleaf 3.0是一個(gè)完全徹底重構(gòu)的模板引擎(官網(wǎng)原文:Thymeleaf 3.0 builds around a completely new template processing engine),極大的減少內(nèi)存占用和提升性能和并發(fā)性,避免v2.1版因大量的輸出標(biāo)記的集合產(chǎn)生的資源占用。
Thymeleaf 3.0放棄了大多數(shù)面向DOM的處理機(jī)制,變成了一個(gè)基于事件的模板處理器,它通過(guò)處理模板標(biāo)記或文本并立即生成其輸出,甚至在新事件之前響應(yīng)模板解析器/緩存事件。Thymeleaf是Spring Boot官方的推薦使用模板。
允許您處理六種模板,有:
-HTML
-XML
-TEXT
-JAVASCRIPT
-CSS
-RAW
簡(jiǎn)單表達(dá)式
變量表達(dá)式:${...}
選擇變量表達(dá)式:*{...}
消息表達(dá)式:#{...}
URL表達(dá)式: {...}
代碼段表達(dá)式:~{...}
變量表達(dá)式在Spring中就是模型屬性
例如:${user.name}
定義在屬性中:<span th:text="${book.author.name}">
遍歷:<li th:each="book:${books}">
<!-- springmvc 保存了一個(gè) model 對(duì)象: departments -->
<!-- 獲取所有 departments -->
<p th:text="${departments}"></p>
<!-- 獲取 departments 的第一個(gè)元素 -->
<p th:text="${departments[0]}"></p>
<!-- 獲取第一個(gè) department 對(duì)象的 name 屬性 -->
<p th:text="${departments[0].name}"></p>
<!-- 也可以用 ['name'] 來(lái)獲取第一個(gè) department 對(duì)象的 name 屬性 -->
<p th:text="${departments[0]['name']}"></p>
<!-- 甚至可以調(diào)用方法! -->
<p th:text="${departments[0].getId()}"></p>
<p th:text="${departments[0]['name'].substring(0, 1)}"></p>
選擇表達(dá)式就像變量表達(dá)式,它們用于先前選擇的對(duì)象上執(zhí)行,而不是在整個(gè)上下文變量映射中執(zhí)行。
只要是沒(méi)有選擇的對(duì)象,選擇表達(dá)式與變量表達(dá)式的語(yǔ)法是完全一樣的。那什么是選擇的對(duì)象呢?是一個(gè):th:object對(duì)象屬性綁定的對(duì)象。
例如:*{customer.name}
展示book變量的屬性:
<div th:object="${book}">
<span th:text="*{title}">...</span>
</div>
<div th:object="document[2]">
<!-- 以下三種方式在這種情況下是等價(jià)的 -->
<p th:text="${#object.id}"></p>
<p th:text="*{id}"></p>
<p th:text="${document[2].id}"></p>
</div>
消息表達(dá)式用于展示靜態(tài)資源的內(nèi)容,比如i18n屬性配置文件
例如:#{main.title}
一個(gè)完整的例子:
<table>
...
<th th:text="#{header.address.city}">...</th>
<th th:text="#{header.address.country}">...</th>
...
</table>
<!-- 還可以結(jié)合變量表達(dá)式使用 -->
#{${config.welcomeKey}}
比如新建/WEB-INF/templates/home.properties,home.welcome的內(nèi)容:home.welcome=this messages is from home.properties!
使用消息表達(dá)式:<p th:text="#{home.welcome}">This text will not be show!</p>
一個(gè)更深入的例子:
結(jié)合消息表達(dá)式、變量表達(dá)式、預(yù)處理表達(dá)式
#{home.__${sel.code}__}
看上去很亂是吧,實(shí)際上可以分解成3步:
1、先計(jì)算變量${sel.code},假如值是welcome
2、__的含義是需要預(yù)處理的變量值,那么就變成#{home.welcome}
3、計(jì)算最終結(jié)果,簡(jiǎn)單吧
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Thymeleaf教程入門(mén)學(xué)習(xí)",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為您服務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)