[Thymeleaf] 타임리프 추가 기능

hi·2022년 11월 28일

스프링 통합으로 추가되는 기능

  • 스프링의 SpringEL 문법 통합

  • ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원

  • 편리한 폼 관리를 위한 추가 속성

    • th:object (기능 강화, 폼 커맨드 객체 선택)
    • th:field , th:errors , th:errorclass
  • 폼 컴포넌트 기능

    • checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원
  • 스프링의 메시지, 국제화 기능의 편리한 통합

  • 스프링의 검증, 오류 처리 통합

  • 스프링의 변환 서비스 통합(ConversionService)


th:object

  • 커맨드 객체 지정
  • 사용시 먼저 해당 오브젝트 정보를 넘겨줘야 함

*{...}

  • 선택 변수 식
  • th:object 에서 선택한 객체에 접근

th:field

  • HTML 태그의 id, name, value 속성을 자동으로 처리

  • HTML checkbox의 히든 필드를 자동 생성

  • th:each로 함께 반복문을 돌릴 때 id뒤에 임의로 1,2,3.. 숫자를 추가

ids.prev() , ids.next()

<div th:each="region : ${regions}" class="form-check form-check-inline">
	<input type="checkbox" th:field="*{regions}"
    					   th:value="${region.key}"
						   class="form-check-input">
	<label th:for="${#ids.prev('regions')}"
 		   th:text="${region.value}" class="form-check-label">서울</label>
</div>

th:each="region : ${regions}"
th:for="${#ids.prev('regions')}"

  • HTML의 id 가 타임리프에 의해 동적으로 만들어지기 때문에
    label 의 대상이 되는 id 값을 임의로 지정 불가

  • ids.prev(...) , ids.next(...) 을 이용하여 동적으로 생성되는 id 값을 사용 가능

타임리프에서 ENUM 직접 접근

<div th:each="type : ${T(hello.itemservice.domain.item.ItemType).values()}">
  • 스프링 EL 문법으로 ENUM 직접 사용
  • ENUM에 values() 호출시 ENUM의 모든 정보가 배열로 반환

but
ENUM의 패키지 위치가 변경될 시, 컴파일 오류를 잡을 수 없음

0개의 댓글