thymeleaf는 뷰 템플릿이다. HTML 태그를 기반으로 동적인 뷰를 제공한다.
우선 타임 리프의 특징은 아래와 같습니다.
1. *.html 확장자를 사용한다.
2. 별도의 레이아웃 프레임워크의 도움 없이 레이아웃을 관리할 수 있다.
thymeleaf layout에 대해 알고싶다면 이전 포스팅을 확인바란다.
[Spring Boot/thymeleaf] - thymeleaf layout 구성
3. HTML 문법으로 JAVA 데이터를 처리할 수 있다.
오늘은 3번에 대해 정리하겠다.
표현식 : th:[속성]="서버에서 전달받은 값 OR 조건식"
Thymeleaf 3.x 에서는 html 태그 없이 표현이 가능하다.
[[$user.USER_ID]]
Title | Desc |
th:text | 텍스트내용 |
th:utext | HTML Tag가 있다면 Tag를 반영한 텍스트내용 |
th:each | 반복문 |
th:if | 조건문 |
객체 | Desc |
#calendars | java.util.Calendar 서식 지원 |
#arrays | 배열 관련 기능 제공 |
Controller
@GetMapping("/thymeleaf")
public String thymeleafTest(Model model) {
model.addAttribute("message1", "Hello World");
model.addAttribute("message2", "<p>Hello World!</p>");
List<User> userList = new ArrayList<>();
for(int nIdx=0;nIdx<3;nIdx++) {
userList.add(new User(nIdx, "이름" + nIdx, "M") );
}
User user = new User(9999, "홍길동", "W") ;
model.addAttribute("user", user);
model.addAttribute("userList", userList);
model.addAttribute("today", new Date());
return "thymeleaf";
}
HTML
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layout/default">
<th:block layout:fragment="content">
<div id="page-wrapper">
<h1>th:text 예제</h1>
<h2 th:text="${message1}">Thymeleaf Sample</h2>
<h2 th:text="${message2}">Thymeleaf Sample</h2>
<br>
<h1>th:utext(Html) 예제</h1>
<h2 th:utext="${message2}">Thymeleaf Sample</h2>
<h1>each 예제</h1>
<table>
<tr th:each="user : ${userList}">
<td th:text="${user.USER_ID}"></td>
</tr>
</table>
<h1>객체 예제</h1>
<p th:text="${user.USER_ID}">default</p>
<p>[[${user.USER_ID}]]</p>
<h1>삼항연산자 예제</h1>
<p th:text="${user.USER_SEX == 'M' ? '남자' : '여자' }">삼항연산자</p>
<h1>with 예제</h1>
<p th:with="id = ${user.USER_ID}" th:text="${id}"></p>
<h1>if 예제</h1>
<p th:if="${user.USER_NO}== 9999" th:text="${user.USER_ID}"></p>
<p><br>Today : <span th:text="${#calendars.format(today,'yyyy-MM-dd')}">2021-09-15</span></p>
<p><br>user count : <span th:text="${#arrays.length(userList)}"></span></p>
</div>
</th:block>
</html>
결과
th:text 예제
Hello World
<p>Hello World!</p>
th:utext(Html) 예제
Hello World!
each 예제
이름0
이름1
이름2
객체 예제
홍길동
홍길동
삼항연산자 예제
여자
with 예제
홍길동
if 예제
홍길동
Today is: 2021-09-15
user count : 3
application.yml값 가지고오기
application.yml
spring:
main:
title:DEV LOG
HTML
<h1 th:text = "${@environment.getProperty('spring.main.title')}">TITLE</h1>
결과
DEV LOG
thymeleaf layout 구성 (0) | 2021.09.14 |
---|
댓글 영역