@ModelAttribute
에는 두 가지 기능이 있다.
1. 요청 파라미터를 객체에 매핑해주는 기능과
2. Model
에 객체를 자동으로 넣어주는 기능이 있다.
1번 기능은 어느 정도 익숙한 기능이지만, 2번 기능은 조금 생소한 기능이다.
2번 기능은 다음과 같이 사용하면 된다.
@PostMapping
public String addItem(@ModelAttribute(name="item") Item item, Model model) {
itemRepository.save(item);
// model.addAttribute("item", item);
return "item";
}
@RequestParam
으로 요청 파라미터를 받았으면, 모델객체에 데이터를 넣어줘야 view 쪽에서 데이터를 사용할 수 있다.
하지만 @ModelAttribute
를 사용했을 경우에는 모델에 넣는 코드가 없어도 스프링에서 자동으로 넣어준다.
매개변수에
Model model
이 없어도 스프링에서 자동으로 만들고 넣어준다!!!!
@PostMapping
public String addItem(@ModelAttribute Item item) {
itemRepository.save(item);
return "item";
}
@ModelAttribute
의 name
속성을 생략하면 객체의 첫 글자를 소문자로 바꿔서 모델에 저장해준다.
@ModelAttribute
를 사용할 때는 Model 없이 쓰자!!