Thymeleaf 실무에서 자주 사용하는 문법
1. Thymeleaf 기본 문법
1.1 th:text
텍스트를 출력할 때 사용합니다.
<p th:text="${message}">Default Text</p>
${message}
는 컨트롤러에서 전달된 모델의 값으로 대체됩니다.
1.2 th:utext
HTML 태그를 포함한 텍스트를 출력하며, HTML을 그대로 렌더링합니다.
<div th:utext="${content}"></div>
2. 속성 대체
2.1 th:href
와 th:src
링크와 이미지를 동적으로 설정할 때 사용합니다.
<a th:href="@{/home}">Home</a>
<img th:src="@{/images/logo.png}" alt="Logo">
2.2 th:class
CSS 클래스를 동적으로 지정합니다.
<div th:class="${isActive ? 'active' : 'inactive'}">Content</div>
3. 조건문과 반복문
3.1 th:if
와 th:unless
조건에 따라 요소를 렌더링할 때 사용합니다.
<p th:if="${user.loggedIn}">Welcome, <span th:text="${user.name}"></span>!</p>
<p th:unless="${user.loggedIn}">Please log in.</p>
3.2 th:each
리스트나 배열을 반복하여 출력합니다.
<ul>
<li th:each="item : ${items}" th:text="${item}"></li>
</ul>
4. 폼 처리
4.1 th:object
와 th:field
폼 데이터를 바인딩할 때 사용합니다.
<form th:action="@{/submit}" th:object="${user}" method="post">
<input type="text" th:field="*{name}" placeholder="Name"/>
<input type="password" th:field="*{password}" placeholder="Password"/>
<button type="submit">Submit</button>
</form>
5. URL 매핑
5.1 @{}
표현식
URL을 동적으로 생성할 때 사용됩니다.
<a th:href="@{/user/profile(id=${userId})}">Profile</a>
6. 속성 설정 및 조합
6.1 th:attr
여러 속성을 동시에 설정할 때 사용합니다.
<a th:attr="href=@{/home}, title=${title}">Home</a>
7. 문자열 조합 및 연산
7.1 th:text
에서 문자열 조합
문자와 변수를 결합하여 표시할 수 있습니다.
<p th:text="'Hello, ' + ${user.name} + '!'">Default</p>
8. 조건 연산자
8.1 ?:
삼항 연산자
조건에 따라 다른 값을 반환할 때 사용됩니다.
<span th:text="${user.age > 18 ? 'Adult' : 'Child'}"></span>
9. 메시지 처리
9.1 th:text
와 #{}
messages.properties
파일에서 메시지를 가져올 때 사용합니다.
<p th:text="#{welcome.message}">Welcome</p>
10. 내장 객체
Thymeleaf는 th:object
, th:field
외에도 #dates
, #numbers
, #strings
등의 유틸리티 객체를 제공합니다.
<p th:text="${#dates.format(currentDate, 'yyyy-MM-dd')}"></p>