본문 바로가기
Spring

@ModelAttribute의 역할!

by 쁘니쁘나 2022. 7. 3.

 

@ModelAttribute 는 크게 두가지 역할을 한다.

 

이 예시로 이해를 해보자.

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

 

@ModelAttribute - 요청 파라미터 처리

@ModelAttribute 가 Item 객체를 생성하고, 요청 파라미터의 값을 프로퍼티 접근법(setXXX)으로 입력해준다.

 

@ModelAttribute - Model 추가

Model 에 @ModelAttribute 로 지정한 객체(Item)를 자동으로 넣어준다.

즉 model.addAttribute("item", item) 을 써주지 않아도 자동으로 해준다는 소리!

 

 

💡 만약 아래 예시처럼 @ModelAttribute(”item”) 에서 (”item”)을 써주지 않는다면??

@PostMapping("/add")
  public String addItemV3(@ModelAttribute Item item) {

    itemRepository.save(item);

    return "basic/item";
  }

➡️ @ModelAttribute 에 (”item”) 이렇게 직접 명시해주지 않는다면 객체이름인 Item 에서 자동으로 앞글자만 소문자로 바꿔서 적용된다. 즉, Item → item, HelloData → helloData 이렇게 이름이 적용되므로 참고하자!

 

 

그리고 @ModelAttribute 자체도 생략가능..!!

@PostMapping("/add")
  public String addItemV4(Item item) {

    itemRepository.save(item);

    return "basic/item";
  }

➡️ Item 객체에 자동으로 @ModelAttribute 가 적용되어 item 이라는 이름으로 매칭되어 Model 객체에 넣어준다!

 

 

 

 

 

참고


인프런 - 스프링 MVC1 (김영한)

댓글