본문 바로가기
Backend, Server/Thymeleaf

[Thymeleaf] 타임리프 간단한 사용법

by ggyongi 2022. 1. 20.
반응형

타임리프 사용 선언

<html xmlns:th="http://www.thymeleaf.org">

 

 

속성 변경 

타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다. HTML을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href 의 값이 href 로 대체되면서 동적으로 변경할 수 있다.

 

 

타임리프의 핵심

타임리프의 장점은 HTML로 파일 보기를 유지하면서 템플릿 기능도 할 수 있다는 것.

HTML을 파일로 직접 열었을 때 th:xxx가 있어도 웹브라우저는 th: 속성을 알지못하므로 무시함

 

 

URL 링크 표현식 - @{...}

타임리프는 URL 링크를 사용하는 경우 @{...}로 표현해야 한다.

예시 : 

th:href="@{/css/bootstrap.min.css}"

 

URL 링크 표현식2

th:href="@{/basic/items/{itemId}(itemId=${item.id})}"

{ }안에 변수를 넣고 ( )안에 변수값을 설정해주면 된다.

 

다른 예시

예) th:href="@{/basic/items/{itemId}(itemId=${item.id}, query='test')}"
생성 링크: http://localhost:8080/basic/items/1?query=test

 

 

리터럴 대체 - |...|

타임리프에서 문자와 표현식 등은 분리되어 있기 때문에 더해서 사용해야 한다.

<span th:text="'Welcome to our application, ' + ${user.name} + '!'">

 

다음과 같이 리터럴 대체 문법을 사용하면, 더하기 없이 편리하게 사용할 수 있다.

<span th:text="|Welcome to our application, ${user.name}!|">

다른 사용 예시

th:onclick="|location.href='@{/basic/items/add}'|"

 

 

반복 출력 - th:each

<tr th:each="item : ${items}">을 사용하면 모델에 포함된 items컬렉션 데이터가 item 변수에 하나씩 포함된다.

반복문 안에서는 그 item 변수를 쓸 수 있다.

   <tr th:each="item : ${items}">
        <td><a href="item.html" th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}">회원id</a></td>
        <td><a href="item.html" th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}">상품명</a></td>
        <td th:text="${item.price}">10000</td>
        <td th:text="${item.quantity}">10</td>
      </tr>

 

 

변수 표현식

<td th:text="${item.price}">10000</td>

모델에 포함된 값이나, 타임리프 변수로 선언한 값을 조회할 수 있다. 프로퍼티 접근법을 사용한다. ( item.getPrice() )

 

 

내용 변경 - th:text
<td th:text="${item.price}">10000</td>
내용의 값을 th:text 의 값으로 변경한다.
여기서는 10000을 ${item.price} 의 값으로 변경한다.

 

 

속성 변경 - th:action

HTML form에서 action에 값이 없으면 현재 URL에 데이터를 전송한다.

사용예시

  //action값이 비어있으므로 현재 URL에 데이터를 post
  <form action="item.html" th:action method="post">

활용법 예시

상품 등록 폼의 URL과 실제 상품 등록을 처리하는 URL을 똑같이 맞추고 HTTP 메서드로 두 기능을
구분한다.
상품 등록 폼: GET /basic/items/add
상품 등록 처리: POST /basic/items/add
이렇게 하면 하나의 URL로 등록 폼과, 등록 처리를 깔끔하게 처리할 수 있다.

 

 

조건문 - th:if

해당 조건이 참이면 실행

* 아래의 param은 관용어다. 쿼리 파라미터를 쉽게 조회할 수 있다.

<h2 th:if="${param.status}" th:text="'저장 완료!'"></h2>

 

 

 

 

--------------------------

참고 : 인프런 김영한님 강의(스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술)

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글