티스토리 뷰

SpringFramework

[Spring] @ModelAttribute

진현주 2015. 7. 13. 14:51


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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함