[Spring] Model

춤추는 머쉬룸·2023년 9월 6일
0
post-thumbnail

인프런 / 스프링 MVC 1편 (김영한) 강의를 정리한 노트입니다.

  • 상품 목록 - 타임리프

Model

스프링에서 Model이 뭘까요? 한번 알아봅시다.

import org.springframework.ui.Model;

메소드로는 addAttribute가 있네요.
@GetMapping
 public String items(Model model) {
 List<Item> items = itemRepository.findAll();
 model.addAttribute("items", items);
 return "basic/items";
 }

Model 은 Controller 클래스에 속한 메소드의 파라미터로 사용합니다.

@addAttribute

Controller 에서 생성한 데이터를 model.addAttribute 를 통해 JSP 같은 View 에 전달합니다. addAtrribute(key, value) 의 형태로 전달하는데, View 에서 ${key} 는 value로 치환됩니다.

@ModelAttribute

파라미터 안에서 사용합니다. 지정한 이름으로 파라미터로 들어온 값들을 담습니다. 새로운 객체 생성과 set 을 자동으로 수행하는 것입니다. 또, addAttribute 도 자동으로 해줍니다.
사용은 @ModelAttribute("이름") 객체 객체이름 식으로 활용합니다. Model 또한 넣을 필요가 없습니다.

아래 코드에서 둘을 비교해보세요.

@ModelAttribute 사용 전

@PostMapping("/add")
public String addItemV1(@RequestParam String itemName,
                       @RequestParam int price,
                       @RequestParam Integer quantity,
                       Model model) {

        Item item = new Item();
        item.setItemName(itemName);
        item.setPrice(price);
        item.setQuantity(quantity);

        itemRepository.save(item);

        model.addAttribute("item", item);

        return "basic/item";
    }

@ModelAttribute 사용

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

        itemRepository.save(item);

        return "basic/item";
    }

같은 기능이지만 코드가 훨씬 단순해지는 것을 확인할 수 있습니다.



이번 시간에는 Model에 대해 알아보았습니다.
꼭 알아두어야 하겠네요!

0개의 댓글