[TIL] Thymeleaf - th:each의 nice한 사용

Thymeleaf

Thymeleaf의 th:each

  • Thymeleaf에서 th:each의 기능은 다들 써봤을 것이다.
  • 그래도 쓰는 간단한 사용법
1
2
3
4
5
<tr th:each="dto : ${result}">
    <td th:text="${dto.seq}"></td>
    <td th:text="${dto.name}"></td>
    <td th:text="${dto.price}"></td>
</tr>
  • 마치 for-each문처럼 dto(result)에서 하나씩 꺼내서 tr,td를 만들어주게 된다.

index를 얻는 법?

  • 하고자 했던 일은 dto.seq값을 얻는 것이 아닌, tdindex를 얻는 일이었다.
  • index를 얻어서 그것을 tr element의 class 혹은 id를 생성해주고 싶었다.
  • 다음과 같은 방법으로 해결하였다.
1
2
3
<tr th:each="dto, index : ${result}">
    <td id="${index.index}" th:text="${dto.seq}"></td>
</tr>

more…

  • 그런데 이렇게 생성을 하면 td의 id 값은 단순한 숫자 (0, 1, 2, …)로 생성되어 보기 좋지 않다.
  • id="dto0 이런식으로 하려면 어떻게 해야할까?
1
2
3
<tr th:each="dto, index : ${result}">
    <td id="'dto'+${index.index}" th:text="${dto.seq}"></td>
</tr>
  • 위와 같이 string을 더하듯 쓰면 원하는대로 생성 할 수 있었다.

  • 참조 블로그

    • [https://elfinlas.github.io/2018/02/18/thymeleaf-loop-index/]