타임리프는 기본적으로 HTML 태그의 속성에 기능을 정의해서 사용한다.

  • 간단한 표현:
    • 변수 표현식: ${...}
    • 선택 변수 표현식: *{...}
    • 메시지 표현식: #{...}
    • 링크 URL 표현식: @{...}
    • 조각 표현식: ~{...}
  • 링크 URL 표현식: @{...}
    • @{/hello} : /hello
    • @{/hello (param1= ${param1}, param2=${param2} ) } : /hello?param1=data1&param2=data2
    • @{/hello/{param1}/{param2} (param1=${param1}, param2=${param2} ) } : /hello/data1/data2
    • @{/hello/{param1} (param1=${param1}, param2=${param2} ) } : /hello/data1?param2=data2
    • @{hello} : hello -> 상대 경로를 사용하는 방식으로 해당 파일의 폴더를 기준으로 확인한다.
  • 리터럴
    • 텍스트, 숫자, 불린, 널, 리터럴 토큰
    • 문자 리터럴은 항상 (') 작은따옴표를 사용해야 한다.
    • 작은따옴표 대신에 || 두 개를 사용할 수 있다.
    • | [원하는 리터럴 작성] | 형태로 사용할 수 있다.
  •  연산
    • 문자 연산 
      • 문자 합치기: +
      • 리터럴 대체: |The name is ${name}|
    • Binary operators: +, -, *, /, %
    • Minus sign (unary operator): -
    • 비교 연산
      • gt : >
      • lt : <
      • ge : >=
      • le : <=
      • not : !
      • eq : ==
      • neq, ne : !=
    • 불린 연산
      • Binary operators: and, or
      • Boolean negation (unary operator): !, not
    • 조건 연산
      • If-then: (if) ? (then)
      • If-then-else: (if) ? (then) : (else)
      • Default: (value) ?: (defaultvalue)
  • 특별한 토큰
    • No-Operation: _
      • HTML 내용을 그대로 출력된다.
  • 텍스트
    • th:text= ${...}
  • 객체
    • ${#request}, ${#response}, ${#session}, ${#servletContext}, ${#locale}
    • HTTP 요청 파라미터 접근 : ${param.paramData}
    • HTTP 세션 접근 : ${session.sessionData}
    • 스프링 빈 접근 : ${@bean.Object(data)}
  • 유틸리티 객체와 날짜
    • #message : 메시지, 국제화 처리
    • #uris : URI 이스케이프 지원
    • #dates : java.util.Date 서식 지원
    • #calendars : java.util.Calendar 서식 지원
    • #temporals : 자바8 날짜 서식 지원
    • #numbers : 숫자 서식 지원
    • #strings : 문자 관련 편의 기능
    • #objects : 객체 관련 기능 제공
    • #bools : boolean 관련 기능 제공
    • #arrays : 배열 관련 기능 제공
    • #lists , #sets , #maps : 컬렉션 관련 기능 제공
    • #ids : 아이디 처리 관련 기능 제공
  • th:each = " [변수명] : ${컬랙션} "
    • 이해를 돕자면 배열 for문을 생각해보자.
    • index : 0부터 시작하는 값
    • count : 1부터 시작하는 값
    • size : 전체 사이즈
    • even, odd : 홀, 짝(bool)
    • first, last : 처음, 마지막(bool)
    • current : 현재 객체
  • 주석
    • HTML : <!-- -->
    • 타임리프 : <!--/* */--> - 랜더링 시 주석 부분을 제거한다.
    • 타임리프 프로토타입 : <!--/*/ /*/--> - HTML 파일을 그대로 열면 주석 처리, 랜더링하면 보인다.
  • 탬플릿 조각(th:fragment)
    • 웹 페이지의 공통 영역을 함께 사용하기 위한 방법
    • 다른 곳에 포함되는 코드 조각이다.
    • 부분 포함 insert : th:insert= "~{위치 :: 클래스 조각}"
    • 부분 포함 replace : th:replace="~{위치 :: 클래스 조각}"
    • 부분 포함 단순 표현식: th:replace="위치 :: 클래스 조각"
    • 파라미터 사용 : th:replace="~{위치 :: 클래스 조각(파라미터) }"
  • 편리한 폼 관리를 위한 추가 속성
    • th:object : 폼 데이터를 넣어서 사용한다.
      • th:object="*{ [변수명] }"
    • th:field : html 태그의 id, name, value 속성을 자동으로 처리해준다.
      • th:field에서 지정한 변수명과 동일하다.
    • th:errors : 해당 필드에 오류가 있는 경우에 태그를 출력한다. th:if의 편의 버전이다.
    • th:errorclass : th:field에서 지정한 필드에 오류가 있으면 class 정보를 추가한다.