1. 개요

ThymeleafXML, XHTML 및 HTML5 문서를 처리하기위한 다목적 Java 템플릿 엔진입니다 .

이 빠른 사용방법(예제)에서는 라이브러리에서 제공하는 몇 가지 다른 기능과 함께 Thymeleaf로 반복을 수행하는 방법을 살펴 보겠습니다.

Thymeleaf에 대한 자세한 내용은 여기 에서 소개 기사를 참조  하십시오 .

2. Maven 의존성

이 예제를 생성하기 위해 Thymeleaf 라이브러리와 함께 Spring Framework 라이브러리를 사용할 것입니다.

여기에서 의존성 ( thymeleaf  및 thymeleaf-spring )을 볼 수 있습니다 .

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

3. 예제 설정

뷰 레이어로 이동하기 전에 예제를위한 MVC 구조를 만들어 보겠습니다.

모델 레이어의 스 니펫 코드로 시작 :

public class Student implements Serializable {
    private Integer id;
    private String name;
    // standard contructors, getters, and setters
}

모델을로드하고 뷰 레이어로 반환하는 컨트롤러 메서드도 제공합니다.

@GetMapping("/listStudents")
public String listStudent(Model model) {
    model.addAttribute("students", StudentUtils.buildStudents());
    return "listStudents.html";
}

위의 샘플에서  buildStudents ()  메서드는 단순히 Student 객체 List을 반환 한  다음 모델에 추가합니다 .

4.  번째 각  속성

Thymeleaf에서 반복은 th : ​​each  속성 을 사용하여 수행됩니다  .

이 속성에 대한 흥미로운 것 중 하나는이다 그것을 어떤 다른 데이터 유형을 반복을 받아 들일 것 , 예를 들면 :

  • java.util.Iterable을  구현하는 객체
  • java.util.Map을 구현하는 객체
  • 배열
  • 다른 개체는 하나의 요소를 포함하는 단일 값 List 인 것처럼 처리됩니다.

이제 위의 예제에서 설정 한 데이터로 th : ​​each 속성 호출 해 보겠습니다  .

<tr th:each="student: ${students}">
    <td th:text="${student.id}" />
    <td th:text="${student.name}" />
</tr>

코드 스 니펫은 학생  List을 반복 하는 th : ​​each를 보여줍니다 . 모델 속성은 $ {}  표기법을 사용하여 액세스 되며 List의 각 요소는 학생  변수 를 통해 루프 본문에 전달됩니다  .

5. 상태 변수

Thymeleaf는 또한 상태 변수를 통해 반복 프로세스를 추적하는 유용한 메커니즘을 활성화합니다 .

상태 변수는 다음 속성을 제공합니다.

  • index : 0 (영)으로 시작하는 현재 반복 인덱스
  • count : 지금까지 처리 된 요소의 수
  • size : List의 총 요소 수
  • even / odd : 현재 반복 인덱스가 짝수인지 홀수인지 확인합니다.
  • first : 현재 반복이 첫 번째 반복인지 확인합니다.
  • last : 현재 반복이 마지막 반복인지 확인합니다.

이 예에서 상태 변수가 어떻게 작동하는지 살펴 보겠습니다.

<tr 
  th:each="student, iStat : ${students}" 
  th:style="${iStat.odd}? 'font-weight: bold;'" 
  th:alt-title="${iStat.even}? 'even' : 'odd'">
    <td th:text="${student.id}" />
    <td th:text="${student.name}" />
</tr>

여기에 iStat.odd 속성을 포함하여 조건을 평가하고 현재 행에 굵은 스타일을 설정했습니다. 다음 평가에서도 동일하게 수행되지만 이번에는 iStat.even 사용하여  alt / title HTML 속성을 통해 값을 인쇄합니다.

경우에 우리는 (로 표시 상태 변수의 명시 적 창조 생략 iStat 우리의 예에서)을, 우리는 단순히 사용하여 우리의 상태 변수를 호출 할 수 studentStat 변수의 집합입니다 학생 접미사와 통계를.

6. 결론

이 기사에서는 Thymeleaf 라이브러리에서 제공하는 많은 기능 중 하나를 살펴 보았습니다.

기본 속성 과 함께 th : ​​each 속성을 사용하여 Thymeleaf에서 반복을 표시했습니다 .

이 문서에 표시된 코드의 작동 버전은 GitHub 저장소 에서 사용할 수 있습니다 .