1. 개요

이 예제에서는 Thymeleaf에서 사용할 수 있는 다양한 유형의 조건문을 살펴 보겠습니다 .

Thymeleaf에 대한 빠른 소개는이 기사 를 참조 하십시오 .

2. Maven 의존성

Spring과 함께 Thymeleaf를 사용하는 데 필요한 Maven 의존성부터 시작하겠습니다.

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

다른 Spring 릴리스의 경우 일치하는  thymeleaf-springX  라이브러리를 사용해야합니다. 여기서 는 Spring 버전을 나타냅니다. 도 있습니다 Spring 5로 시작하는 지원 3.0.8.RELEASE Thymeleaf에 의해.

필요한 의존성의 최신 버전은 여기 에서 찾을 수 있습니다 .

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 연산자  ? :  변수의 현재 상태에 따라 HTML 요소 내에서 텍스트를 렌더링 할 수 있습니다.

변수가 null 인 경우 기본 표현식을 사용하여 기본 텍스트를 제공 할 수 있습니다 .

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

위의 예에서 우리 는 정의 된 경우 teacher.additionalSkills 변수 의 내용을 표시하고 그렇지 않은 경우 UNKNOWN텍스트 가 렌더링 되기를 원합니다 .

부울 표현식에 따라 랜덤의 텍스트를 표시 할 수도 있습니다.

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

이전 예제에서와 같이 간단한 부울 변수를 쿼리 할 수 ​​있지만 문자열 비교 및 ​​범위 검사도 가능합니다.

다음 비교기 및 해당 텍스트 표현이 지원됩니다 > (gt),> = (ge), <(lt), <= (le), == (eq) 및! = (ne) .

3.2. If – 그렇지 않으면

일 : 경우제 :하지 않는  속성이 우리가 제공 한 조건에 따라 HTML 요소를 렌더링 할 수 있습니다 :

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

teacher.gender 변수 의 내용이 F 와 같으면 값이 " Female "인 범위 요소 가 렌더링됩니다.

그렇지 않으면 " Male "이 있는 요소 가 렌더링됩니다. 이러한 설정은 대부분의 프로그래밍 언어에 있는 if-else 과 비슷합니다 .

3.3. 스위치 – 케이스

표현식의 가능한 결과가 두 개 이상인 경우 HTML 요소의 조건부 렌더링을 위해 th : ​​switch th : ​​case  속성을 사용할 수 있습니다 .

<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>

teacher.courses List 의 크기에 따라 기본 텍스트, 단일 코스 또는 사용 가능한 모든 코스가 표시됩니다. 기본 옵션 에는 별표 (*) 가 사용됩니다.

4. 결론

이 짧은 기사에서 우리는 다양한 유형의 Thymeleaf 조건문을 조사하고 다양한 옵션을 보여주는 몇 가지 간단한 예를 제시했습니다.

예제는 GitHub 프로젝트 에서 찾을 수 있습니다 .