인프런 / 스프링 MVC 1편 (김영한) 강의를 정리한 노트입니다.
- 상품 목록 - 타임리프
Model
스프링에서 Model이 뭘까요? 한번 알아봅시다.
import org.springframework.ui.Model;
@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에 대해 알아보았습니다.
꼭 알아두어야 하겠네요!