知識庫 / Spring / Spring MVC RSS 訂閱

使用Thymeleaf枚舉 或者 Thymeleaf中枚舉的使用

Spring MVC
HongKong
9
01:21 PM · Dec 06 ,2025

1. 簡介

在本快速教程中,我們將學習如何在 Thymeleaf 中使用枚舉。

我們將首先在下拉列表中列出枚舉值。之後,我們將研究如何使用枚舉在模板中進行流程控制。

2. 部署準備

讓我們首先在我們的 <em >pom.xml</em> 文件中添加 Spring Boot Thymeleaf Starter

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <versionId>3.1.5</versionId>
</dependency>

我們將使用具有多種顏色選擇的組件,因此我們來定義 Color 枚舉:

public enum Color {
    BLACK, BLUE, RED, YELLOW, GREEN, ORANGE, PURPLE, WHITE
}

現在,讓我們創建一個 Widget 類:

public class Widget {
    private String name;
    private Color color;

    // Standard getters/setters
}

3. 在下拉菜單中顯示枚舉

讓我們使用 `select` 和 `option` 創建一個下拉菜單,該下拉菜單使用我們的 Color 枚舉:

<select name="color">
    <option th:each="colorOpt : ${T(com.baeldung.thymeleaf.model.Color).values()}" 
        th:value="${colorOpt}" th:text="${colorOpt}"></option>
</select>

T 操作符是 Spring 表達式語言的一部分,用於指定類的實例或訪問靜態方法。

如果運行我們的應用程序並導航到我們的 Widget 頁面,我們將看到所有顏色在 顏色 下拉列表中:

當提交我們的表單時,Widget 對象將被填充所選顏色:

4. 使用顯示名稱

由於所有大寫字母可能會顯得有些突兀,我們來擴展一下我們的示例,提供更友好的下拉菜單標籤。

我們將首先修改我們的 <em >Color</em> 枚舉,以提供顯示名稱:

public enum Color {
    BLACK("Black"), 
    BLUE("Blue"), 
    RED("Red"), 
    YELLOW("Yellow"), 
    GREEN("Green"),
    ORANGE("Orange"), 
    PURPLE("Purple"), 
    WHITE("White");
    
    private final String displayValue;
    
    private Color(String displayValue) {
        this.displayValue = displayValue;
    }
    
    public String getDisplayValue() {
        return displayValue;
    }
}

接下來,讓我們前往我們的 Thymeleaf 模板,並更新下拉菜單以使用新的 displayValue

<select name="color">
    <option th:each="colorOpt : ${T(com.baeldung.thymeleaf.model.Color).values()}" 
        th:value="${colorOpt}" th:text="${colorOpt.displayValue}"></option>
</select>

我們的下拉菜單現在顯示了更易讀的顏色名稱:

5. 條件語句

有時,我們可能想根據枚舉值的不同來改變我們顯示的文本。我們可以使用我們的 Color 枚舉與 Thymeleaf 的條件語句一起使用。

假設我們對某些 Widget 顏色的偏好。

我們可以使用 Thymeleaf 的 if 語句以及我們的 Color 枚舉,以條件地顯示文本:

<div th:if="${widget.color == T(com.baeldung.thymeleaf.model.Color).RED}">
    This color screams danger.
</div>

另一個選項是使用 String 比較:

<div th:if="${widget.color.name() == 'GREEN'}">
    Green is for go.
</div>

6. 切換語句

除了 if 語句之外,Thymeleaf 還支持 switch-case 語句。

讓我們使用 switch-case 語句與我們的 Color 枚舉:

<div th:switch="${widget.color}">
    <span th:case="${T(com.baeldung.thymeleaf.model.Color).RED}"
      style="color: red;">Alert</span>
    <span th:case="${T(com.baeldung.thymeleaf.model.Color).ORANGE}"
      style="color: orange;">Warning</span>
    <span th:case="${T(com.baeldung.thymeleaf.model.Color).YELLOW}"
      style="color: yellow;">Caution</span>
    <span th:case="${T(com.baeldung.thymeleaf.model.Color).GREEN}"
      style="color: green;">All Good</span>
</div>

如果輸入一個橙色小部件,我們應該看到我們的警告語句:

7. 結論

在本教程中,我們首先使用 Thymeleaf 創建了一個下拉菜單,使用了我們在應用程序中定義的 Color 枚舉。隨後,我們學習瞭如何使下拉菜單顯示的值更易於閲讀。

在對下拉菜單的輸入進行處理後,我們轉向輸出端,並學習瞭如何在控制結構中使用枚舉。我們使用 ifswitch-case 語句根據我們的 Color 枚舉來條件一些元素。

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

發佈 評論

Some HTML is okay.