modelAttribute란?

개발새발·2023년 4월 1일
0

spring

목록 보기
22/26
post-custom-banner

spring 수업중, ModelAttribute 이라는 어노테이션에 대해 알게 되었는데 토이플젝했을 때 사용한 적이 없어서 뭐지? 하고 찾아보게되었다.

ModelAttribute란?

@ModelAttribute는 클라이언트가 전송하는 폼(form) 형태의 HTTP Body와 요청 파라미터들을 생성자나 Setter로 바인딩하기 위해 사용된다. @ModelAttribute에는 매핑시키는 파라미터의 타입이 객체의 타입과 일치하는지 등을 포함한 다양한 검증(Validiation) 작업이 추가적으로 진행된다.

동작방식

  1. ModelAttribute는 먼저 Reflection을 사용해 필드를 인자로 받는 생성자가 있는지 검사한다.
  2. 만약 있다면 해당 생성자를 이용해 값을 세팅하고 없다면 Setter로 값을 세팅한다.

예시

@PostMapping("/items/new")
public String create(@ModelAttribute(”form”) BookForm form) {
    
     Book book = new Book();
     book.setName(form.getName());
     book.setPrice(form.getPrice());
     book.setStockQuantity(form.getStockQuantity());
     book.setAuthor(form.getAuthor());
     book.setIsbn(form.getIsbn());

     itemService.saveItem(book);
     return "redirect:/";
}

@ModelAttribute은 사실 생략도 가능하다. 위와 아래는 같은 방식으로 동작한다.

@PostMapping("/items/new")
public String create(BookForm form) {
    
     Book book = new Book();
     book.setName(form.getName());
     book.setPrice(form.getPrice());
     book.setStockQuantity(form.getStockQuantity());
     book.setAuthor(form.getAuthor());
     book.setIsbn(form.getIsbn());

     itemService.saveItem(book);
     return "redirect:/";
}

cc. https://mangkyu.tistory.com/72

profile
발새발개
post-custom-banner

0개의 댓글