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 객체를 반환해주면서 데이터와 뷰 이름을 함께 전달한다.