Spring MVC 2편 타임리프 스프링 통합

신재원·2023년 2월 3일
0

Spring MVC 2편

목록 보기
4/26

타임리프 스프링 통합

  • 타임리프는 메뉴얼을 2가지 제공한다
    1. 기본 메뉴얼 : 스프링 없이 타임리프를 사용할경우의 메뉴얼
    2. 스프링 통합 메뉴얼 : 타임리프와 스프링을 통합해서 지원하는 기능의 메뉴얼

📌 스프링 통합 메뉴얼

  • 스프링의 SpringEL 문법 통합
  • $(@...) 처럼 스프링 빈 호출 지원
  • 편리한 폼 관리를 위한 추가 속성 지원
    • Controller에서 model 객체가 넘어와야된다.
    • th:object (Form에 쓸 객체를 담고)
    • th:field(value들을 입력한다), th:errors, th:errorclass
  • 폼 컨포넌트 기능
  • 스프링의 메시지, 국제화 기능의 편리한 통합
  • 스프링의 검증, 오류 처리 통합
  • 스프링의 변환 서비스 통합
  • 예시 (object에 Controller의 model에서 넘어온 객체를담는다)

체크박스 1

  • 체크박스를 체크하면 HTML Form에서 open=on이라는 값이 넘어가는데 스프링은 on→true로 변환해준다.
    📌 !! 문제는 체크박스를 체크하지 않았을 경우 false값이 아닌 null값이 반환이 된다.

  • 해결 : 히든필드는 데이터값이 무조건 넘어가기 때문에 체크가 되어있지 않으면 false를 반환해준다.

    • 히든 필드는 _open 처럼 기존 체크 박스이름 앞에 _를 붙여준다.

체크박스 2 (타임리프가 체크박스를 해결해준다)

  • th:field를 사용해 히든필드 따로 생성없이 타임리프가 해결해준다.

@ModelAttribute의 특별한 기능

  • 어떤 메서드가 호출되든 "모델"에 다 담기는 기능
    • model에 담아야할 메서드가 중복이 될때 사용할수있다.
  • HTML의 Id값은 타임리프가 동적으로 순서대로 자동으로 만들어줌으로 <label for ="id 값">을 안해줘도된다.

라디오 버튼

  • 여러 선택지중 하나만 선택할수있게 만드는것이다.

📌 번외 : Enum타입.values를 하면 Enum 클래스의 값을 호출해 사용할수있다.

  • 타임리프에서 Enum을 직접 접근할수있는 방법이있지만, 권장하지않는다.
    • model에 담아서 넘기는것이 유지보수성이 좋다.

셀렉트 박스

  • 라디오 버튼과 비슷하게 여러 선택지 중에 하나를 선택하여 사용한다.

0개의 댓글