스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 By 김영한 강사님의 강의 내용입니다.
ModelAttribute가 어떤 기능들을 해주는지 알아보자.
@RequestParam 어노테이션을 이용해 요청이 들어오는 파라미터들을 다음과 같이 처리할 수 있다.
@PostMapping("/add")
public String saveItemV1(@RequestParam String itemName,
@RequestParam int price,
@RequestParam Integer quantity,
Model model) {
Item item = new Item();
item.setItemName(itemName);
item.setPrice(price);
item.setQuantity(quantity);
itemRepository.save(item);
model.addAttribute("item", item);
return "basic/addForm";
}
하나하나 다 @RequestParam으로 받아 전부 set해준 뒤 model.addAttribute를 통해서 등록하는 과정을 거쳐야 한다.
@PostMapping("/add")
public String saveItemV2(@ModelAttribute("item") Item item) {
itemRepository.save(item);
return "basic/addForm";
}
@ModelAttribute("item")으로 요청을 받으면 Item 변수들을 자동으로 받아 model에 "item"으로 등록해준다! 굉장히 편리하다.
그러나 더 편리하게 쓸 수 있다.
@PostMapping("/add")
public String saveItemV3(@ModelAttribute Item item) {
itemRepository.save(item);
return "basic/addForm";
}
다음과 같이 @ModelAttribute("item")의 ("item")도 생략할 수 있다.
생략하면 매개변수 클래스의 첫번째 문자를 소문자로 바꾼 이름이 model에 등록된다.
지금은 Item이니 item으로 model에 등록된다.
추가적으로 @ModelAttribute도 생략할 수 있다.
@PostMapping("/add")
public String saveItemV4(Item item) {
itemRepository.save(item);
return "basic/addForm";
}