관리 메뉴

nalaolla

@ModelAttribute 본문

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
반응형

'SPRING' 카테고리의 다른 글

Spring Framework: 포워딩/리다이렉션  (0) 2016.05.31
@RequestParam  (0) 2016.05.31
@Controller  (0) 2016.05.31
@RequestMapping  (0) 2016.05.31
Spring Framework: annotation 정리  (0) 2016.05.31