상품 등록 처리 - @ModelAttribute

@ModelAttribute의 2가지 역할

  1. @RequestParam 으로 POST 방식을 들어온 HTML Form 데이터를 파라미터로 받고, item 객체 생성해서 setter로 각 값들을 객체의 값으로 셋팅한다. itemRepository에 추가한다.

@ModelAttribute

  1. 요청 파라미터 처리 : Item 객체를 생성하고, 요청 파라미터의 값을 프로퍼티 접근법(setXxx)으로 입력해준다. 이때 @ModelAttribute는 모델에 객체를 자동으로 넣어준다! model.addAttribute("iteme",item)를 생략해도 같은 동작을 한다!

모델에 데이터를 담을 때는 이름이 필요한데, 이때 괄호 안의 이름을 사용한다. @ModelAttribute("hello") Item item 이름을 hello 로 지정 model.addAttribute("hello", item); 모델에 hello 이름으로 저장

@PostMapping("/add")
public String addItemV2(@ModelAttribute("item") Item item, Model model) {
      itemRepository.save(item);
      //model.addAttribute("item", item); //자동 추가, 생략 가능
      return "basic/item";
}

2. @ModelAttribute의 이름 생략 가능 클래스의 첫글자만 소문자로 변경해서 등록한다! ex) Item => "item" HelloData => "helloData"

  @PostMapping("/add")
  public String addItemV3(@ModelAttribute Item item) {
      itemRepository.save(item);
      return "basic/item";
  }

3. @ModelAttribute 전체 생략 가능

Last updated