백엔드 프레임워크 & 언어/SpringBoot

Thymeleaf 기본문법

anodos 2024. 1. 15. 13:13

표현식: <div th:[속성]=”서버에서 받는 값 및 조건식”/>

(태그는 div가 아니여도 html에서 지원하는 태그면 상관없다.)

 

 

1. th: text

태그 안의 텍스트를 서버에서 전달 받은 값에 따라 표현하고자 할 때 사용된다.

 

1.1  사용예시

<span th:text="${hello}">message</span>

(이 경우 서버에서 hello라는 변수가 있을 경우 message의 자리를 변수값으로 대체하게 된다.)

 

2. th:utext

변수에서 받은 값에서 html태그가 있다면 태그값을 반영해서 표시해준다

(th:text와의 차이는 사용 예시 참고)

 

2.1사용 예시

서버에서 받은 hello값이 <p>Hello World!</p> 

 

  • th:text의 경우

[Thymeleaf 템플릿 내의 코드]

 

<span th:text="${hello}">message</span>

 

[실제 웹브라우저에 표시되는 내용]

 

<p>Hello World!</p>

(태그값을 인식하지 않고 그대로 텍스트로 인식해서 출력한다.)

 

 

  • th:utext의 경우

[Thymeleaf 템플릿 내의 코드]

 

<span th:utext="${hello}">message</span>

 

[실제 웹브라우저에 표시되는 내용]

 

Hello World!

(태그에서 지정한 대로 값이 표시된다.)

 

 

3. th:value

엘리먼트들의 value값을 지정할 수 있다.

 

3.1사용 예시

<button th:value=”${hello}”/>

(이런식으로 value값을 서버 값에따라 바꿔줄 수 있다.)

 

 

4. th:with

변수 값을 지정해서 사용할 수 있다.

 

4.1 사용 예시

<div th:with=”temp=${hello}” th:text=”${temp}”>

 

5. th:switch

Switch-case문이 필요할 때 사용한다.

 

th:case에서 case문을 다루고 *로 case문에서 다루지 않은 모든 경우가 처리된다.

(java switch문의 default역할)

 

5.1 사용 예시

<div th:switch="${hello}">

    <p th:case="'admin'">User is an administrator

    <p th:case="#{roles.manager}">User is a manager

    <p th:case="*">User is a manager

</div>

 

6. th:if

조건문이 필요할 때 사용한다.  else문이 필요한 경우에는 th:unless를 사용한다.

 

1.1. 사용 예시

<p th:if="${hello}=='web'" th:text="${hello}"></p>

<p th:unless="unless 입니다."></p>

 

 

7 th:each

반복문이 필요한 경우에 사용한다.

 

리스트와 같은 collection 자료형을 서버에서 넘겨주면 그에 맞춰 반복적인 작업이 이루어질 때 사용한다.

 

먼저 "반복문 돌릴 객체의 변수명": "리스트 변수 명" (예: th:each="item:${itemList}")와 같이 적어 반복문을 명시하고

 

이런식으로 데이터를 사용하면 된다.

 

7.1 사용 예시

<div class="btn-group" th:each="item:${itemList}">
   <button class="btn btn-secondary" th:value="${item.landmarkSn}" th:text="${item.landmarkName}"
style="margin: 5px;"></button>
</div>

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h6>1. th:text 예시</h6>
<span th:text="${hello}">message</span>
<span>님 안녕하세요!</span>
<br>

<h6>2. th:utext 예시</h6>
<th:block th:utext="${hello}">message</th:block>

<br>

<h6>3. th:value 예시</h6>
<input th:value="${hello}" style="width: 100px; height:30px;">

<h6>4. th:with 예시</h6>
<div th:with="temp=${hello}" th:text="${temp}"></div>
<br>

<h6>5. th:switch 예시</h6>
<div th:switch="${hello}">
    <p th:case="'admin'">admin
    <p th:case="#{hello}=='user'">User
    <p th:case="*">*입니다
</div>
<br>

<h6>6. th:if 예시</h6>
<p th:if="${hello}=='web'" th:text="${hello}"></p>
<p th:unless="${true}" th:text="${hello}">
    unless 입니다
</p>
<br>

<h6>7. th:each 예시</h6>
<div class="btn-group" th:each="item:${itemList}">
    <button class="btn btn-secondary" th:value="${item.landmarkSn}" th:text="${item.landmarkName}"
            style="margin: 5px;"></button>
</div>
<br>
</body>
</html>

 

 

 

출처: https://chung-develop.tistory.com/5 [춍춍 블로그:티스토리]

반응형

'백엔드 프레임워크 & 언어 > SpringBoot' 카테고리의 다른 글

Thymeleaf  (0) 2023.12.24