@ModelAttribute 어노테이션을 이용하면 다음 두 가지 작업을 수행할 수 있다.

- 1. @RequestMapping 어노테이션 없는 메서드로 모델에 추가될 객체 생성

@ModelAttribute 어노테이션 메서드에 적용하면 해당 메서드가 생성한 객체가 뷰에 전달된다.

따라서, @ModelAttribute 어노테이션을 사용하면 두 개 이상의 요청처리 메서드에서 공동으로

사용되는 모델 객체를 생성할 수 있다.

(쉽게 Controller 에서 해당 @RequestMapping value 값과 상관없이 @ModelAttribute 어노테이션 메서드 실행 후

뷰 페이지로 객체럴 넘겨준다란 뜻 - 그럼 @RequestMapping 선언 메서드의 객체와 @ModelAttribute 메서드의

객체 두개 모두 뷰에 전달된다)


- Client 에서 /serach/main.do 요청이 오면 GameSearchController 의

main() 메서드만 실행이 되는게 아니라 @ModelAttribute 어테이션 선언된 메서드도 실행 후

생성된 객체가 함께 뷰로 전달된다.



- 2. 커맨트 객체의 초기화 작업 수행(작업순 : @ModelAttribute -> @RequestMapping 메서드)

@ModelAttribute 어노테이션이 적용된 메서드가 @RequestMapping 어노테이션 적용된 메서드 보다 먼저 실행되기 때문에, 커맨드 객체에 대한 초기화 작업이 필요하다면 커맨드 객체와 동일한 이름을 같는 @ModelAttribute 어노테이션을 적용된 메서드를 이용하여 초기화 작업을 수행시킨다.




PS> @ModelAttribute 어노테이션은 Controller 에서 @RequestMapping 메서드의 참소변수 Bean 객체의 Return 명?

쉽게말해 뷰에 건너줄 커맨드객체의 명칭을 임의로 바꿀때도 사용이 된다. 이건 알고 있어야징


+ Recent posts