URL 링크
단순한 URL
@{/hello} -> /hello
메뉴얼
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#link-urls
리터럴
리터럴은 소스 코드상에 고정된 값을 말하는 용어이다.
String a = "Hello"
int a = 10 * 20
"Hello"는 문자 리터럴, 10과 20은 숫자 리터럴이다.
타임리프에서 문자 리터럴은 항상 ' ( 작은 따옴표 ) 로 감싸야 한다.
<span th:text = " ' hello ' " >
공백 없이 쭉 이어진다면 하나의 토큰으로 인지해서 작은 따옴표를 생략할 수 있다.
<span th:text = " hello " >
연산
비교연산 : HTML 엔티티 사용만 조심
조건식 : 자바와 동일
Elvis 연산자 : 조건식의 편의 버전
No-Operation : _ 인 경우 타임리프 실행하지 않는 것처럼 동작 가능
속성 값 설정
타임리프는 주로 HTML 태그에 th:+ 속성을 지정하는 방식으로 동작한다.
속성 설정
th:+ 로 속성을 적용하면 기존 속성을 대체한다. 기존 속성이 없으면 새로 만든다.
속성 추가
th:attrappend : 속성 값의 뒤에 값을 추가
th:attrprepend : 속성 값의 앞에 값을 추가
th:classappend : class 속성에 자연스럽게 추가
checked 처리
HTML에서는 checked 속성만 있으면 -> checked 처리를 해버린다.
타임리프의 th:checked="false"로 하면 checked의 처리를 제거한다.
반복
<tr th:each="user" : ${users}">
th:each를 사용한다.
List뿐만 아니라 배열, Iterable, Enumeration을 구현한 모든 객체에 가능하다. Map도 가능.
반복 상태 유지 기능 userStat
index, count, size, even, odd, first, last, current 등 다양한 기능 제공
조건부 평가
if, unless(if의 반대)
th:if th:unless
switch
<td th:switch="${user.age}">
<span th:case="10">10살</span>
주석
1. 표준 HTML 주석
<!-- -->
2. 타임리프 파서 주석
<!-- /* */-->
3. 타임리프 프로토타입 주석 (타임리프 렌디링시에만 주석x)
<!--/*/ /*/-->
블록
<th:block>은 HTML 태그가 아닌 타임리프의 유일한 자체 태그다.
block을 사용하면 원하는 block 만큼 th:each로 반복할 수 있다.
자바스크립트 인라인
타임리프는 자바스크립트에서 타임리프를 편리하게 사용할 수 있는 자바스크립트 인라인 기능을 제공한다.
<script th:inline="javascript">
템플릿 조각
웹 페이지를 개발할 때는 공통 영역이 많이 있다. 예를 들어서 상단 영역이나 하단 영역, 좌측 카테고리 등등 여러 페이지에서 함께 사용하는 영역들이 있다. 이런 부분을 코드를 복사해서 사용한다면 변경시 여러 페이지를 다 수정해야 하므로 상당히 비효율 적이다. 타임리프는 이런 문제를 해결하기 위해 템플릿 조각과 레이아웃 기능을 지원한다.
template/fragment/footer :: copy 는 template/fragment/footer.html 템플릿에 있는 th:fragment="copy" 라는 부분을 템플릿 조각으로 가져와서 사용한다는 의미이다.
th:insert는 현재 태그 div 내부에 추가하고
th:replace는 현재 태그 div를 대체한다.
인프런 김영한님의 스프링 MVC 2편을 듣고 작성한 글입니다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
'Spring' 카테고리의 다른 글
검증 - Bean Validation (0) | 2022.05.29 |
---|---|
메시지, 국제화 (0) | 2022.05.26 |
타임리프 - 기본기능(1) (0) | 2022.05.25 |
스프링 MVC - 웹페이지 만들기(3) (0) | 2022.04.16 |
스프링 MVC - 웹페이지 만들기(2) (0) | 2022.04.16 |
댓글