본문 바로가기

웹 프로그래밍/프론트 엔드

Thymeleaf(타임리프) 기초

타임리프의 핵심

th:x 가 붙은 부분은 서버사이드에서 렌더링 되고, 기존 것을 치환함.

th:x 가 없으면 기존 html의 속성 x가 그대로 사용됨

 

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

앞에 써줘야 사용가능

 

URL 링크 표현식(@{...})

@{/css/bootstrap.min.css}

 

리터럴 대체 문법( | | )

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

| | 안에다 넣으면 편리하게 한꺼번에 사용 가능

원래는 "'location.href=' + '\'' +@{/basic/items/add} + '\''" 이렇게 +와 이스케이프로 해야함

 

변수 표현식(${...})

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

모델에 넘어온 값이나 타임리프 변수로 선언한 값 조회 가능(프로퍼티 접근법)

 

내용 변경(th:text)

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

10000을 th:text의 값으로 치환

<input type="text" id="itemId" name="itemId" class="form-control" value="1" th:value="${item.id}" readonly>

1을 th:value의 값으로 치환

치환하고 싶은 속성을 지정해야함

 

반복 출력(th:each)

th:each="item : ${items}"

반복문으로 리스트(items)를 하나씩 꺼내서 씀

여기서 items는 모델 값이고, item은 타임리프의 변수로 선언한 값이다.

 

경로 변수 표현식

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

타임리프 변수인 경로 변수{itemId} 를 item.id의 값으로 치환(괄호로 바로 정의할수 있음)

쿼리 파라미터도 생성 가능

e.g. th:href="@{/basic/items/{itemId}(itemId=${item.id}, query='test')}"

-> 생성 링크: http://localhost:8080/basic/items/1?query=test

 

 

URL 링크 더 간단히

th:href="@{|/basic/items/${item.id}|}"

리터럴 대체 문법으로 위의 경로 변수 표현식을 간단히 할수도 있음

 

JSP와 달리 타임리프는 HTML 파일을 웹 브라우저에서도 열어서 확인을 해보면 HTML형식 그대로 이기때문에

내용 식별이 쉽고 서버를 통하면 동적으로 변경된 결과도 확인 가능

순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할수 있는 특징을 네츄럴 템플릿이라고 함 

 

조건문(th:if)

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

조건에 맞으면 생성

'웹 프로그래밍 > 프론트 엔드' 카테고리의 다른 글

타임리프(스프링 통합과 폼)  (0) 2023.04.13
Thymeleaf(타임리프) 기본  (0) 2023.04.11
JavaScript 기초  (0) 2023.04.02
CSS 기초  (0) 2023.04.02
HTML 기초  (0) 2023.04.01