@RequestMapping 어노테이션이 적용된 메소드의 파라미터나 리턴타입으로 ModelAndView, Model, ModelMap, Map, 커맨드 객체 등을 이용해서 모델을 뷰에 전달하게 된다.

컨트롤러가 모델을 어떻게 뷰에 전달하는 지 살펴보도록 하자.

1.1 뷰에 전달되는 모델 데이터

        @RequestMapping("/search/game.do")
public ModelAndView search(@ModelAttribute("command") SearchCommand command, ModelMap model) {
                String[] queryList = getPopularQueryList();
                model.addAttribute("popularQueryList", queryList);
                 
ModelAndView mav = new ModelAndView("search/game");
SearchResult result = searchService.search(command);
mav.addObject("searchResult", result);
return mav;
}
 
근데 이상하다... model 자체를 리턴하지 않는데도 이게 뷰까지 간단 말야..
그리고 mav 도 별도로 또 가고 -ㅅ- 뭐야 이거

-->
 @ModelAttribute 를 메소드에 적용하면 해당 메소드가 생성한 객체가 뷰에 전달된다!!!!
아하.. 그래서 return 에 없는 객체들을 jsp 에서 참조가능했구나!!!!!!



즉.. JSP 에서 호출할때
${searchResult}, ${command.query} , ${popularQueryList} 로 접근된다.... ;;


1.2 Map, Model, ModelMap 을 통한 모델설정.. 

모델의 메소드에 대해서 잠깐 언급하자면,
Model, ModelMap 의 경우는 addAttribute 로 값을 설정하고, Map 이야.. put
그리고 Model은 인터페이스이다.   ExtendedModelMap 으로 할당해서 보통 쓴다.

1.3 ModelAndView 
 ModelAndView야 .. 뭐
    -setViewName() 을 통한 뷰 이름 설정
    -addObject(xxx,xxx) 를 이용한 전달값 추가
    -ModelAndView(뷰이름,맵) 생성자를 통한 뷰이름,Map 데이터 전달 






















 




'IT > 스프링' 카테고리의 다른 글

URI 매칭.. (서블릿 맵핑)  (0) 2012.01.13
@ModelAttribute  (2) 2012.01.13
@Controller 어노테이션... - 1 -  (0) 2012.01.10
filter....  (0) 2012.01.10
DispatcherServlet... more  (0) 2012.01.10

+ Recent posts