Java模板引擎Thymeleaf基本語法詳解
Thymeleaf在Java生態(tài)系統(tǒng)中非常受歡迎,并與Spring框架緊密集成。它具有豐富的擴(kuò)展和第三方庫,可以提供各種功能。Thymeleaf在服務(wù)器端生成HTML頁面,并將最終的結(jié)果發(fā)送給客戶端瀏覽器。頁面中的內(nèi)容在每次請(qǐng)求時(shí)都會(huì)由服務(wù)器動(dòng)態(tài)生成。和Vue這些不同,Vue在客戶端瀏覽器中動(dòng)態(tài)渲染頁面。它可以基于數(shù)據(jù)動(dòng)態(tài)地更新視圖,而無需每次請(qǐng)求都向服務(wù)器發(fā)送數(shù)據(jù)。
Thymeleaf 3.1.2.RELEASE is the latest version. It requires Java SE 8 or newer.
一、Thymeleaf 表達(dá)式語言的使用
Thymeleaf 表達(dá)式語言(簡稱為EL)是 Thymeleaf 強(qiáng)大功能的基礎(chǔ)之一,它使得在模板中可以輕松地插入和操作動(dòng)態(tài)數(shù)據(jù)。下面是幾個(gè)常用的 Thymeleaf 表達(dá)式:
變量表達(dá)式:
${variable}
- 用于在模板中輸出變量的值。
- 示例:
<h1 th:text="${pageTitle}">Page Title</h1>
選擇表達(dá)式:
*{expression}
- 用于從對(duì)象中選擇屬性或調(diào)用方法。
- 示例:
<p th:text="*{user.name}">Default Name</p>
鏈接表達(dá)式:
@{url}
- 用于生成鏈接或動(dòng)態(tài) URL。支持相對(duì)路徑和絕對(duì)路徑。
- 示例:
<a th:href="@{/product/{id}(id=1)}">Product Details</a>
消息表達(dá)式:
#[code]
- 用于國際化支持,根據(jù)當(dāng)前環(huán)境選擇合適的文本。
- 示例:
<span th:text="#{welcome.message}">Welcome!</span>
內(nèi)聯(lián)表達(dá)式:
[[...]]
- 用于 JavaScript 代碼塊內(nèi)的 Thymeleaf 表達(dá)式。
- 示例:
<script th:inline="javascript"> var name = '[[${name}]]'; </script>
二、Thymeleaf 標(biāo)簽的基本用法
Thymeleaf 提供了一系列標(biāo)簽和屬性,使得開發(fā)者能夠更靈活地操作 HTML 元素。下面是一些常用的 Thymeleaf 標(biāo)簽:
th:text:用于設(shè)置元素的文本內(nèi)容。
- 示例:
<h1 th:text="${pageTitle}">Page Title</h1>
- 示例:
th:if 和 th:unless:用于條件判斷并渲染 HTML 元素。
- 示例:
<p th:if="${isUserLoggedIn}">Hello, User!</p>
- 示例:
<p th:unless="${isUserLoggedIn}">Please login to continue.</p>
- 示例:
th:each:用于循環(huán)遍歷集合或數(shù)組,并渲染 HTML 元素。
- 示例:
<ul><li th:each="item : ${items}" th:text="${item}"></li></ul>
- 示例:
th:href 和 th:src:用于設(shè)置鏈接地址和資源路徑。
- 示例:
<a th:href="@{/product/{id}(id=1)}">Product Details</a>
- 示例:
<img th:src="@{/images/myimage.jpg}" alt="My Image" />
- 示例:
th:attr:用于設(shè)置 HTML 元素的屬性。
- 示例:
<input type="text" th:attr="placeholder=#{username.placeholder}" />
- 示例:
三、在模板中使用屬性和變量
Thymeleaf 允許在模板中使用屬性和變量,以插入動(dòng)態(tài)數(shù)據(jù)。下面是幾個(gè)常見的用法:
使用屬性:通過 HTML 元素的屬性來設(shè)置動(dòng)態(tài)值。
- 示例:
<h1 th:text="${pageTitle}">Page Title</h1>
- 示例:
使用變量:使用
${variable}
語法將變量的值插入到模板中。- 示例:
<p th:text="${user.name}">Default Name</p>
- 示例:
在元素內(nèi)部使用屬性和變量:可以在標(biāo)簽的內(nèi)容或?qū)傩灾抵惺褂帽磉_(dá)式語言。
- 示例:
<a th:href="@{/product/${productId}(productId=${product.id})}">Product Details</a>
- 示例:
通過 Thymeleaf 表達(dá)式語言和標(biāo)簽,您可以輕松地在模板中添加動(dòng)態(tài)數(shù)據(jù)和邏輯,并根據(jù)需要進(jìn)行條件判斷、循環(huán)遍歷等操作。 好的,下面我將為您提供示例來說明數(shù)據(jù)綁定、渲染和屬性綁定與條件判斷的用法。
四、在控制器中傳遞數(shù)據(jù)到模板
@Controller public class MyController { @GetMapping("/hello") public String hello(Model model) { String message = "Hello, Thymeleaf!"; model.addAttribute("message", message); return "hello-template"; } }
在這個(gè)示例中,控制器通過 Model
對(duì)象的 addAttribute
方法將數(shù)據(jù)(message
)傳遞給模板。然后,控制器返回字符串 "hello-template"
,表示使用名為 hello-template
的 Thymeleaf 模板來進(jìn)行渲染。
1、使用 Thymeleaf 表達(dá)式渲染數(shù)據(jù)
<h1 th:text="${message}"></h1>
這個(gè)示例中,通過 ${message}
表達(dá)式可以在模板中渲染控制器傳遞過來的 message
數(shù)據(jù)。
2、屬性綁定和條件判斷
<p th:class="${status eq 'active'} ? 'active' : ''">Content</p>
這個(gè)示例中,根據(jù)條件 ${status eq 'active'}
判斷,如果條件成立,則給 <p>
元素添加 active
類;否則,不添加任何類。
我演示了數(shù)據(jù)綁定和渲染,以及屬性綁定和條件判斷的用法。您可以根據(jù)具體需求,在控制器中傳遞數(shù)據(jù)給模板,并使用 Thymeleaf 表達(dá)式根據(jù)數(shù)據(jù)進(jìn)行渲染和操作。請(qǐng)根據(jù)實(shí)際情況修改示例中的變量名和條件,以適應(yīng)您的應(yīng)用程序邏輯。
到此這篇關(guān)于Java模板引擎Thymeleaf基本語法詳解的文章就介紹到這了,更多相關(guān)Java Thymeleaf基本語法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java多線程編程之使用runnable接口創(chuàng)建線程
實(shí)現(xiàn)Runnable接口的類必須使用Thread類的實(shí)例才能創(chuàng)建線程,通過Runnable接口創(chuàng)建線程分為以下兩步2014-01-01SpringBoot整合RabbitMQ 手動(dòng)應(yīng)答(簡單demo)
這篇文章主要介紹了SpringBoot整合RabbitMQ 手動(dòng)應(yīng)答 簡單demo,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01詳解SpringBoot中異步請(qǐng)求和異步調(diào)用(看完這一篇就夠了)
這篇文章主要介紹了SpringBoot中異步請(qǐng)求和異步調(diào)用問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04