在Thymeleaf中使用枚举

2023/05/19

1. 简介

在本快速教程中,我们将学习如何在Thymeleaf中使用枚举。

我们将从在下拉列表中列出枚举值开始。之后,我们将研究在我们的模板中使用我们的枚举进行流量控制。

2. 设置

让我们首先将Thymeleaf的Spring Boot Starter添加到我们的pom.xml文件中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <versionId>2.2.2.RELEASE</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(cn.tuyucheng.taketoday.thymeleaf.model.Color).values()}" 
        th:value="${colorOpt}" th:text="${colorOpt}"></option>
</select>

T运算符是Spring表达式语言的一部分,用于指定类的实例或访问静态方法。

如果我们运行我们的应用程序并导航到我们的小部件入口页面,我们将在颜色下拉列表中看到我们所有的颜色:

当我们提交表单时,我们的Widget对象将填充选定的颜色:

4. 使用显示名称

由于所有大写字母可能有点不和谐,让我们扩展我们的示例以提供更加用户友好的下拉标签。

我们将从修改Color枚举以提供显示名称开始:

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(cn.tuyucheng.taketoday.thymeleaf.model.Color).values()}" 
        th:value="${colorOpt}" th:text="${colorOpt.displayValue}"></option>
</select>

我们的下拉菜单现在显示更易读的颜色名称:

5. if语句

有时我们可能希望根据枚举的值来改变我们显示的内容。我们可以将Color枚举与Thymeleaf条件语句一起使用。

假设我们对一些可能的小部件颜色有意见。

我们可以使用带有Color枚举的Thymeleaf if语句来有条件地显示文本:

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

另一种选择是使用字符串比较:

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

6. Switch-Case语句

除了if语句之外,Thymeleaf还支持switch-case语句。

让我们对Color枚举使用switch-case语句:

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

如果我们输入一个橙色的小部件,我们应该看到我们的警告声明:

7. 总结

在本教程中,我们首先使用Thymeleaf使用我们在应用程序中定义的Color枚举创建下拉列表。从那里,我们学习了如何使下拉显示值更具可读性。

在使用下拉列表检查输入端之后,我们转到输出端并学习了如何在控制结构中使用枚举。我们使用if和switch-case语句来根据我们的Color枚举来调节某些元素。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章