1. 소개

이 빠른 사용방법(예제)에서는 Thymeleaf 에서 열거 형으로 작업하는 방법을 배웁니다 .

드롭 다운에 열거 형 값을 나열하는 것으로 시작합니다. 그런 다음 템플릿 내에서 흐름 제어를 위해 열거 형을 사용하는 방법을 살펴 보겠습니다.

2. 설정

추가하여하자의 시작 Thymeleaf에 대한 Spring 부팅 스타터를 우리에 의 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. 드롭 다운 메뉴에 열거 형 표시

선택 및 옵션 을 사용하여 Color 열거 형 을 사용하는 드롭 다운을 만들어 보겠습니다 .

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

T의 오퍼레이터의 일부인 스프링 표현 언어 클래스의 인스턴스를 지정 또는 정적 메소드를 액세스.

애플리케이션을 실행하고 위젯 입력 페이지로 이동하면 색상 드롭 다운 에 모든 색상이 표시됩니다 .

우리는 우리의 양식을 제출하면, 우리의 위젯 객체를 선택한 색상으로 채워집니다 :

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(com.baeldung.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(com.baeldung.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 문을 지원합니다 .

의는 사용하자 스위치의 경우 우리와 함께 문을 컬러 열거 :

<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 열거 형을 사용하여 드롭 다운을 만드는 것으로 시작했습니다 . 여기에서 드롭 다운 표시 값을 더 읽기 쉽게 만드는 방법을 배웠습니다.

드롭 다운으로 입력 측을 살펴본 후 출력 측으로 이동하여 제어 구조에서 열거 형으로 작업하는 방법을 배웠습니다. Color 열거 형을 기반으로 일부 요소를 조건화하기 위해 ifswitch-case 문을 모두 사용했습니다 .

전체 예제는 GitHub에서 확인할 수 있습니다 .