Model 객체와 @ModelAttribute

김하나·2023년 5월 18일

Spring Boot

목록 보기
12/16

Model객체

HashMap의 형태를 갖고 있어, Key, value 값이 있고,
addAttribute()와 같은 기능을 통해 모델에 원하는 속성과 그것에 대한 값을 주어 전달할 뷰에 데이터를 전달.

   @GetMapping("/items/new")
    public String createForm(Model model){
        model.addAttribute("form", new BookForm());
        return "items/createItemForm";
    }
  • Model 객체는 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 하기 때문에
    뷰로 전달해야 하는 데이터를 담아서 보낼 수 있다.
  • model.addAtribute("form",new BookForm()); -> Model에 form 이름으로 객체가 저장됨

@ModelAttribute

강제로 전달받은 파라미터를 Model에 담아 전달 하고자 할 때 사용하는 어노테이션

@ModelAttribute가 걸려있는 파라미터는 타입에 관계없이 무조건 Model에 담아서 전달되므로, 파라미터로 전달된 데이터를 다시 화면에서 사용해야 할 경우 유용하게 사용!

 @PostMapping("items/{itemId}/edit")
    public String updateItem(@PathVariable Long itemId, @ModelAttribute("form") BookForm form){
        Book book = new Book();
       
        itemService.updateItem(itemId, form.getName(), form.getPrice(), form.getStockQuantity());
        return "redirect:items";
        }
  • @ModelAttribute는 Model에 @ModelAttribute로 지정한 객체를 자동으로 넣어줌
  • 위의 예제에서는 @ModelAttribute("form") BookForm form 이름을 form으로 지정

0개의 댓글