Web/Spring
[Spring] @ModelAttribute , Model & ModelAndView 객체
돈기법
2022. 3. 25. 15:58
1. @ModelAttribute
@ModelAttribute를 이용하면 커멘드 객체의 이름을 변경할 수 있고,
이렇게 변경된 이름은 뷰에서 커멘드 객체를 참조할 때 사용된다.
- 컨트롤러
public String memJoin(Member member)
- 뷰
ID : ${member.memID}
- 컨트롤러
public String memJoin(@ModelAttribute("mem") Member member)
- 뷰
ID : ${mem.memId}
2. Model & ModelAndView
컨트롤러에서 뷰에 데이터를 전달하기 위해 사용되는 객체로 Model과 ModelAndView가 있다.
Model은 뷰에 데이터만을 전달하기 위한 객체이고, ModelAndView는 데이터와 뷰의 이름을 함께 전달하는 객체이다.
[Model]
@RequestMapping(value = "/memModify", method = RequestMethod.POST)
public String memModify(Model model, Member member) {
Member[] members = service.memberModify(member);
model.addAttribute("memBef", members[0]);
model.addAttribute("memAft", members[1]);
return "memModifyOk";
}
addAttribute()를 통해 값을 저장하고, 값을 전달해 줄 view 이름을 return 한다.
[ModelAndView]
@RequestMapping(value = "/memModify", method = RequestMethod.POST)
public ModelAndView memModify(Member member) {
Member[] members = service.memberModify(member);
ModelAndView mav = new ModelAndView();
mav.addObject("memBef", members[0]);
mav.addObject("memAft", members[1]);
mav.setViewName("memModifyOk");
return mav;
}
ModelAndView 객체를 생성한 후, addObject()로 값을 넣어주고 setViewName()으로 view 이름을 지정해준다.
ModelAndView 객체를 반환해주면서 데이터와 뷰 이름을 함께 전달한다.