본문 바로가기
java/spring

spring - @ModelAttribute

by rewind 2024. 7. 5.

@ModelAttribute

적용 대상을 모델의 속성으로 자동 추가해주는 애너테이션

반환타입 또는 컨트롤러 메서드의 매개변수에 적용 가능

 

key-value형태로 저장

1. key를 직접 지정하지 않으면?

→ 타입의 첫글자가 소문자인것으로 스프링내에서 알아서 지정한다

(@ModelAttribute Mydate myDate, Model model) → model.addAttribute("myDate", myDate) : 같은 의미

 

2. 반환타입에 붙이면?

→ 해당 이름으로 모델에 자동으로 객체 추가, 호출결과 저장 후 별도의 모델 호출 없이도 뷰에서 객체 사용 가능

→ @ModelAttribute를 사용하면 model.addAttribute("myDate",myDate); 이렇게 할 필요 없다

 

참조형 매개변수에는 생략가능(자동 바인딩)

컨트롤러 매개변수에 따라서

- @RequestParam(기본형,String) → 기본형 : ${param.파라미터명}으로 직접 사용가능, 모델에 저장할 필요 X

- @ModelAttribute(타입이 참조형) → 스프링 내부의 Converter를 통해서 변환되어 바인딩 됨

 

@WebDataBinder

컨트롤러 메서드 선언 돼있을때 순서

1. 타입 변환(타입이 일치하지 않을때) : 결과&에러 저장

2. 데이터검증 : 결과와 에러를 가지고 검증

검증한 결과와 에러를 다시 저장 → 컨트롤러로 반환

 

※ 바인딩할 데이터는 반드시 매개변수의 바로 뒤에 위치하여야 한다.