웹 개발에서 데이터를 반복적으로 출력해야 할 때 자주 사용되는 Thymeleaf의 th:each와 JSP의 forEach는 비슷한 기능을 수행하지만, 각각 고유한 특징과 장단점을 가지고 있습니다. 본 글에서는 두 문법의 차이점을 자세히 비교하고, 블로그 작성에 필요한 정보를 제공하여 독자들이 Thymeleaf와 JSP를 더욱 효과적으로 활용할 수 있도록 돕겠습니다.
- th:each는 HTML 태그에 속성으로 추가됩니다.
- 반복 대상은 Java 컬렉션(List, Set, Map 등) 또는 배열이어야 합니다.
<tag th:each="변수 : ${컬렉션}">
<!-- 반복될 내용 -->
</tag>
- th:each에서 선언된 변수는 해당 반복 내에서만 사용 가능합니다.
- 선언된 변수는 새로운 스코프를 형성하며, 반복 밖의 변수와 이름이 동일해도 겹치지 않습니다.
- th:each는 자동으로 인덱스 값을 제공합니다.
- 변수명Stat이라는 형태의 내장 변수를 통해 접근할 수 있습니다.
- 변수명Stat.index → 0부터 시작하는 인덱스.
- 변수명Stat.count → 1부터 시작하는 카운트.
- 변수명Stat.size → 컬렉션의 크기.
- 변수명Stat.odd/even → 현재 반복이 홀수/짝수인지(Boolean).
<ul>
<li th:each="item, iterStat : ${items}" th:text="${iterStat.index} + ' : ' + ${item}"></li>
</ul>
반복 조건 자체는 th:if 또는 th:unless와 함께 사용해야 합니다
<ul>
<li th:each="item : ${items}" th:if="${item != null}" th:text="${item}"></li>
</ul>
특징 | Thymeleaf (th:each) | JSP (forEach) |
기본 문법 | HTML 속성으로 선언 | JSTL 태그 사용 |
변수 스코프 | 반복 내에서만 사용 가능 | 반복 내에서만 사용 가능 |
인덱스 제공 | 내장 변수 (변수명Stat) 사용 | varStatus 속성 사용 |
조건부 반복 | th:if, th:unless와 함께 사용 가능 | 조건문(c:if)과 함께 사용 |
HTML 친화성 | HTML 구조를 유지하며 템플릿으로 활용 가능 | JSP 태그로 인해 HTML 가독성 낮아짐 |
Thymeleaf는 HTML 파일의 가독성과 유지보수성을 강조하며, JSP는 단순하고 유연한 반복 처리를 제공합니다. 사용하는 프레임워크와 프로젝트 요구사항에 맞게 선택하면 됩니다.
[Thymeleaf] foreach th:each, th:switch, th:if (0) | 2022.01.21 |
---|---|
[thymeleaf] 타임리프 날짜 date format 변환 (0) | 2022.01.06 |
[thymeleaf] 타임리프 .properties에 정의된 값 가져오기 (0) | 2022.01.04 |
[thymeleaf] 타임리프 textarea 데이터 세팅 방법 (0) | 2022.01.03 |
[thymeleaf] 클래스 동적추가 th:classappend 사용방법 (0) | 2022.01.02 |