티스토리 뷰
Spring Handler Method - @ModelAttribute
-
@RequestParam과 같이 요청 매개변수를 매핑하는 방법중 하나이다.
-
@ModelAttribute
- 단순 데이터 타입을 하나의 복합타입의 객체로 받아오거나, 객체를 새로 생성할때 사용할수 있다.
- URLPath, 요청매개변수, 세션 등 ..
- 생략이 가능하다.
-
왜 사용하는가 ?
- @RequestParam으로도 충분한 처리가 가능하다.
- 하지만, 요청 매개변수가 많은 경우라면 ? ..
- 요청 매개변수가 늘어날수록 Handler Method Argument로 게속해서 늘어날것..
- @ModelAttribute를 사용할 경우
- 요청 매개변수 개수의 상관없이 @ModelAttribute를 활용하여 Event 라는 객체로 하나로 받아올수 있다.
- Event객체를 생성해서, 요청매개변수를 Event 객체로 바인딩 하는 과정의 코드도 사라지게된다.
-
값을 바인딩 할수 없는경우 ?
- 400 Error
- BindingException 발생
-
바인딩 에러를 직접 처리하고 싶은경우
- BindingResult 를 활용하여 해당 에러를 핸들링이 가능하다.
- 바인딩 이후, 검증작업이 필요한 경우
- @Valid(JSR-303)
- @Validated(Spring 제공)
- @Valid 혹은, @Validated 를 사용할 경우, Validation결과에 대한 에러도 BindinResult로 핸들링이 가능하다.
정리
- 요청매개변수가 많다면 @ModelAttribtue를 활용하여 컴포짓오브젝트 (복합객체) 로 받아올 수있다.
- 바인딩이 불가능한 요청이 존재할경우, 400Error, BindingException이 발생한다.
- Valid, Validated를 활용하여 유효성 검증이 가능하다.
- BindinResult객체로 바인딩 에러, 검증에러에 대한 핸들링이 가능하다
'Spring' 카테고리의 다른 글
Spring - MVC @SessionAttributes (0) | 2019.07.28 |
---|---|
Spring - MVC @Valid_@Validated (0) | 2019.07.28 |
Spring - MVC FormData (0) | 2019.07.27 |
Spring - MVC @RequestParam (0) | 2019.07.27 |
Spring - MVC PathVariable_MatrixVariable (0) | 2019.07.25 |
댓글