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 枚舉。隨後,我們學習瞭如何使下拉菜單顯示的值更易於閲讀。
在對下拉菜單的輸入進行處理後,我們轉向輸出端,並學習瞭如何在控制結構中使用枚舉。我們使用 if 和 switch-case 語句根據我們的 Color 枚舉來條件一些元素。