Spring 3/@ModelAttribute

@ModelAttribute example

Soul-Learner 2017. 4. 3. 15:36

스프링프레임워크에서 @ModelAttribute 사용 예


아래와 같은 로그인 폼으로부터 서버로 전달된 파라미터가 UserVO 빈 객체에 저장되도록 하는 예


    @RequestMapping(value="/login", method=RequestMethod.POST)

    public String login(UserVO user, Model model){

    model.addAttribute("id", user.getId());

    model.addAttribute("pwd", user.getPwd());

    return "login/loginResult";

    }


loginResult.jsp에서는 ${id} 으로 빈객체의 속성에 접근할 수가 있다



아래처럼 폼 데이터가 저장된 빈 객체와 Model 객체를 나란히 선언해 주면 Model 객체에 빈 객체가 자동으로 저장되므로 뒤이어 실행되는 뷰(loginResult.jsp)에서 빈 객체의 속성에 접근하여 사용할 수 가 있다


    @RequestMapping(value="/login", method=RequestMethod.POST)

    public String login(UserVO user, Model model){  // UserVO객체는 Model에 'userVO' 라는 키로 저장된다

    return "login/loginResult";

    }


위와 같이 Model에 UserVO 객체가 저장될 때 'userVO' 라는 디폴트 키로 저장되므로 loginResult.jsp에서는 ${userVO.id}으로 빈의 속성에 접근할 수가 있다

    


Model에 빈 객체가 저장될 때 디폴트 키를 사용하는 대신에 지정한 키를 사용하려면 아래처럼 @ModelAttribute를 사용하면 된다. 여기서는 UserVO 객체가 Model에 저장될 때 'user' 라는 키를 사용하여 저장되도록 한 것이다


    @RequestMapping(value="/login", method=RequestMethod.POST)

    public String login(@ModelAttribute("user")UserVO user){

    return "login/loginResult";

    }


loginResult.jsp에서는 ${user.id} 으로 빈객체의 속성에 접근할 수가 있다