본문 바로가기

스프링

[spring] @Controller리턴타입의종류

 

@ModelAttribute

1) 파라미터 타입의 오브젝트를 만든다.

- User user라는 파라미터 선언이 있다면 User 타입의 오브젝트를 생성하므로 디폴트 생성자가 반드시 필요하다.

- @SessionAttribute에 의해 세션에 저장된 모델 오브젝트가 있다면, 새로운 오브젝트를 생성하는 대신 세션에 저장되어 있는 오브젝트를 가져온다.

2) 준비된 모델 오브젝트의 프로퍼티에 웹 파라미터를 바인딩 해준다.

- 프로퍼티가 스트링이 아니라면 적절한 변환이 필요함.

- 스트링 전환이 불가능한 경우라면, BindingResult 오브젝트 안에 바인딩 오류를 저장해서 컨트롤러로 넘겨주거나 예외를 발생시킨다. (088번 참조)

3) 모델의 값을 검증

- 필수프로퍼티인데 값이 없거나, 숫자의 경우 지정된 범위를 넘었거나 등의 검증작업을 진행한다.

 > 스프링에선 모델 검증 분리가 가능하다.