카테고리 없음
[Thymleaf] 타임리프 + 스프링 통합
잉숭
2021. 7. 17. 18:57
타임리프는 스프링 없이도 동작하지만 스프링과 통합을 위한 다양한 기능을 제공한다
그 기능에는 다음과 같은 것들이 있다
1. SpringEL 문법 제공
2. 스프링 빈 호출 지원
3. 폼 관리를 위한 추가 속성 제공
4. 폼 컴포넌트 기능 제공
5. 메시지, 국제화 기능의 통합
6. Validation(검증), 오류 처리 통합
7. 변환 서비스 통합 (ConversionService)
입력 폼 처리 기능
*{...} : 선택 변수 식, th:object에서 선언한 객체에 프로퍼티 접근법으로 접근한다
th:field : HTML 태그의 id, name, value 속성을 자동으로 추가해준다
렌더링 전
<input type="text" th:field="*{itemName}" />
렌더링 후
<input type="text" id="itemName" name="itemName" th:value="*{itemName}" />
체크 박스, 라디오 박스, 셀렉트 박스
타임리프가 제공하는 기능을 사용하면 체크 박스, 라디오 박스, 셀렉트 박스를 편리하게 사용할 수 있다
체크 박스의 경우 특별한 기능을 제공하는데 다음을 보자
체크박스를 체크하는 경우 다음과 같은 쿼리가 서버로 전송된다
http://localhost:8080/add?open=on
만약 체크박스를 해제하는 경우 다음과 같은 쿼리가 발생할 것이다
http://localhost:8080/add
이런 경우 서버는 체크박스를 해제한 경우와 체크박스를 선택하지 않은 경우를 구별하지 못한다
따라서 이를 방지하기 위해 open 필드 앞에 _를 붙여 _open 필드를 같이 설정하여야 한다
이를 적용하면
체크한 경우
http://localhost:8080/add?open=on&_open=on
체크를 해제한 경우
http://localhost:8080/add?_open=on
가 된다
직접 hidden 필드를 작성하는 방법 대신 th:field 속성을 추가하면 타임리프는 이를 자동으로 생성해준다