Thymeleaf

[Thymeleaf] 주석, 블록 (th:block)

걸어가는 신사 2022. 1. 25. 19:36

1. 주석

  • 개발자가 작성한 해당 코드에 대한 이해를 돕는 설명이나 디버깅을 위해 작성한 구문을 의미한다.
  • HTML 주석을 포함해서 타임리프가 제공하는 2가지 주석이 더 있다.

Example

//Controller
model.addAttribute("data", "Spring!");

(1) 표준 HTML 주석

  • 자바스크립트의 표준 HTML 주석은 타임리프가 렌더링 하지 않고, 그대로 남겨둔다.
<h1>1. 표준 HTML 주석</h1>
<!--
<span th:text="${data}">html data</span>
-->
  • 브라우저로 확인하면 보이지 않는다.
  • 하지만 소스보기를 통해 주석 처리되었는지 확인할 수 있다.

(2) 타임리프 파서 주석

  • 타임리프 파서 주석은 타임리프의 진짜 주석이다.
  • 렌더링 시에 주석 부분을 제거한다.
<!-- 한줄 -->
<!--/* [[${data}]] */-->

<!-- 한줄 이상 -->
<!--/*-->
<span th:text="${data}">html data</span>
<!--*/-->
  • 브라우저로 확인하면 보이지 않는다.
  • 소스보기를 통해 확인하여도 코드 자체가 보이지 않는다.

(3) 타임리프 프로토타입 주석

  • HTML 파일을 그대로 열어보면 주석처리, 타임리프를 렌더링 한 경우 정상적으로 보인다.
  • HTML 파일을 웹 브라우저에서 그대로 열어보면 HTML 주석이기 때문에 이 부분을 웹 브라우저가 렌더링 하지 않는다.
  • 하지만 타임리프 렌더링을 거치면 이 부분이 정상 렌더링 된다.
<!--/*/
<span th:text="${data}">html data</span>
/*/-->

 

2. 블록

<th:block>은 HTML 태그가 아닌 타임리프의 유일한 자체 태그이다.
  • 타임리프의 특성상 HTML 태그 안에 속성으로 기능을 정의해서 사용한다.
  • 만약 태그가 따로 없을 때 블록을 사용한다.
<th:block th:each="user : ${users}">
    <div>
        사용자 이름1 <span th:text="${user.username}"></span>
        사용자 나이1 <span th:text="${user.age}"></span>
    </div>
    <div>
        요약 <span th:text="${user.username} + ' / ' + ${user.age}"></span>
    </div>
</th:block>
  • <th:block>은 렌더링시 제거된다.
    • 렌더링 시 th:block은 제거되고 블록 안에 있는 내용만 남는다.

 

반응형