SPRING
@ModelAttribute
날아올라↗↗
2016. 5. 31. 09:46
728x90
반응형
@ModelAttribute
관련 문서
required
spring framwork 2.5 or higher
파라미터 타입에 명시하는 경우
method( @ModelAttribute Model model )
method( @ModelAttribute( name ) Model model )
name: attribute name
파라미터를 모델의 프로퍼티와 매핑한다.
화면에서 전달된 쿼리스트링이나 폼 데이터를 모델에 자동 할당하는 기능은 @ModelAttribute 어노테이션 없이도 작동한다. @ModelAttribute는 데이터가 바인딩된 객체를 VIEW에서 재사용되어야 할 필요가 있을 때 사용한다.
가령 다음의 경우엔 MyModel이 "specified"란 이름으로 VIEW에 전달된다:
@RequestMapping("/some.do") public ModelAndView draw(@ModelAttribute("specified") MyModel myModel) { // ... } | cs |
이후 VIEW에선 'specified'를 request.attribute에서 가져올 수 있다.
메서드 선언 레벨에 명시하는 경우
@ModelAttribute returnType methodName( ... )
컨트롤러에서 뷰에 전달할 일종의 공통 모델을 설정한다. 메서드가 리턴하는 값은 Request객체에 전달되며 전달 범위는 해당 메소드가 존재하는 컨트롤러 전체에 해당된다. @ModelAttribute 어노테이션이 적용된 메서드는 컨트롤러가 자동으로 호출한다. 단, 매 요청마다 반복 실행되므로 효율성을 고려해야 한다.
@Controller public class TestController { @RequestMapping("test/viewTest.do") public ModelAndView viewTest() { ModelAndView mv = new ModelAndView(); mv.setViewName("/test/viewTest"); return mv; } @ModelAttribute("myObject") public String refModelTest() { return "hello-o"; // request.setAttirubte("myObject", "hello-o") 와 같으며 // 선언된 클래스의 전역으로 실행된다. } } | cs |
728x90
반응형