티스토리 뷰
Spring MVC
@Controller
@RequestMapping 메서드에서 @ModelAttribute 어노테이션을 사용할 경우. (메소드 단위 사용)
기본적으로! Spring MVC는 클라이언트(사용자)가 보낸 정보를 자바빈 프로퍼티와 1:1 매칭 시켜주는 기능과
model에 전달해주는 기능을 한다.
(사용자가 보내는 파라미터명과 자바빈 프로퍼티 명만 일치시켜 준다면 Spring이 내부적으로 매칭시켜 준다.)
1 2 3 4 | @RequestMapping(value = "view") public String view(Model model, @ModelAttribute BoardResource boardResource) { return "/board/view"; } | cs |
이 경우, 뷰에서는 boardResource란 이름으로 접근 가능.
1 2 3 4 | @RequestMapping(value = "view") public String view(Model model, @ModelAttribute("view") BoardResource boardResource) { return "/board/view"; } | cs |
@ModelAttribute 어노테이션을 사용할 경우 이름을 다시 붙일 수 있다.
위 코드는 뷰에서 view라는 이름으로 접근 가능하다.
1 2 3 4 5 6 | @RequestMapping(value = "view") public String view(Model model, @ModelAttribute BoardResource boardResource) { boardResource = Resource.getList().get(0); //model.addAttribute("boardResource", boardResource); return "/board/view"; } | cs |
boardResource.set() 메소드로 내부 값을 변경할 경우, 변경된 사항이 model에 전달됨.
그런데 위 코드처럼 매개변수로 받은 객체 자체를 변경할 경우, 저렇게 얻은 정보가 model에 담기진 않는다. (왜그런지 잘 모르겠네..)
4번째 주석을 해제하면 원하는대로 model에 넘어감.
가장 큰 한계는 컬렉션, 배열 등 복수 정보를 받지 못한다는 것인데
내부적으로 컬렉션을 받을 수는 있다.
(+)
@Vaild와 BindingResult 객체
'SpringFramework' 카테고리의 다른 글
xml 설정 <mvc:annotation-driven /> (0) | 2015.07.02 |
---|---|
Common application properties (0) | 2015.06.08 |
스프링 공부하면서 읽기 (0) | 2015.06.01 |
[Maven] 메이븐 프로젝트 설정 (0) | 2015.05.20 |
[spring] web.xml 설정 (1) | 2015.02.24 |