知識庫 / Spring / Spring MVC RSS 訂閱

Thymeleaf條件表達式

Spring MVC
HongKong
9
02:03 PM · Dec 06 ,2025

1. 概述

在本教程中,我們將探討Thymeleaf 中可用的不同類型的條件語句。

對於 Thymeleaf 的快速介紹,請參閲這篇文章。

2. Maven 依賴

讓我們從以下 Maven 依賴項開始,這些依賴項是使用 Thymeleaf 與 Spring 結合所需的:

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

我們應該使用與其它 Spring 版本匹配的 thymeleaf-springX 庫,其中 X 代表 Spring 版本。請注意,Spring 5 通過 thymeleaf 從 3.0.8.RELEASE 版本開始得到支持。

所需依賴的最新版本可以在 這裏 找到。

3. Thymeleaf 條件判斷

我們必須區分允許根據條件在 HTML 元素內渲染文本,以及控制 HTML 元素自身實例化的條件判斷。

讓我們定義我們將在本文中使用的 Teacher 模型類:

public class Teacher implements Serializable {
    private String gender;
    private boolean isActive;
    private List<String> courses = new ArrayList<>();
    private String additionalSkills;

3.1. Elvis 運算符

Elvis 運算符 ?: 允許我們在 HTML 元素內根據變量的當前狀態渲染文本。

我們可以使用默認表達式來在變量為 null 時提供默認文本:

<td th:text="${teacher.additionalSkills} ?: 'UNKNOWN'" />

我們希望在 teacher.additionalSkills 變量已定義時顯示其內容,如果未定義則顯示文本 "UNKNOWN"。

還可以根據布爾表達式顯示任意文本:

<td th:text="${teacher.active} ? 'ACTIVE' : 'RETIRED'" />

我們可以查詢簡單的布爾變量,就像在之前的示例中一樣,但字符串比較和範圍檢查也是可行的。

以下比較運算符及其文本表示形式得到支持:,,,,== (eq).

3.2. 如果 – 除非

th:ifth:unless 屬性允許我們根據提供的條件來渲染 HTML 元素:

<td>
    <span th:if="${teacher.gender == 'F'}">Female</span>
    <span th:unless="${teacher.gender == 'F'}">Male</span>
</td>

如果 teacher.gender 變量的值等於 F,則渲染具有值為 Female 的 span 元素。否則,渲染具有 Male   值的元素。

這種設置與大多數編程語言中存在的 if-else 子句類似。

3.3. Switch – Case

如果表達式有超過兩個可能的返回值,可以使用 <em th:switch><em th:case> 屬性來對 HTML 元素進行條件渲染:

<td th:switch="${#lists.size(teacher.courses)}">
    <span th:case="'0'">NO COURSES YET!</span>
    <span th:case="'1'" th:text="${teacher.courses[0]}"></span>
    <div th:case="*">
        <div th:each="course:${teacher.courses}" th:text="${course}"/>
    </div>
</td>

根據課程列表的大小,我們顯示默認文本、單個課程或所有可用的課程。我們使用星號(*) 作為默認選項。

4. 結論

在本文中,我們研究了不同類型的 Thymeleaf 條件語句,並提供了一些簡化的示例,展示了各種選項。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.