상품 등록 폼에서 상품을 등록하고 등록한 상품을 목록에서 확인할 수 있게 만들어 보았다.
@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";
}
기존에는 @RequestParam을 사용해서 요청 파라미터 형식을 처리했다.
먼저 @RequestParam String itemName을 통해 itemName 요청 파라미터 데이터를 해당 변수에 받고 Item 객체를 생성한 뒤 itemRepository를 통해 저장한다. 그리고 저장된 item을 모델에 담아 뷰에 전달하게 된다.
다른 방법으로 @ModelAttribute를 사용하는 방법도 있다. 위에서 사용한 방법은 변수 하나하나 받아 Item을 생성해야 해서 불편하다. @ModelAttribute를 사용해 한 번에 처리해면 조금 편해진다.
@PostMapping("/add")
public String addItemV2(@ModelAttribute("item") Item item, Model model) {
itemRepository.save(item);
//model.addAttribute("item", item); //자동 추가, 생략 가능
return "basic/item";
}
@ModelAttribute를 사용하면 요청 파라미터를 처리하고 Model을 추가해준다. 객체를 생성하고 요청 파라미터 접근법(setXxx)로 입력을 해주기도 하고, Model에 지정한 객체를 자동으로 넣어준다.
public String addItemV2(@ModelAttribute("item") Item item, Model model)
이 쪽 코드를 보면 (”item”)으로 이름을 지정해 주었는데 이름을 생략할 수도 있다. 이름을 생략하게 되면 그 옆에 있는 Item(클래스명)을 참고하여 클래스명에서 첫 글자를 소문자로 변경하여 등록하게 된다. 즉, Item 클래스명을 참고해 item으로 등록하게 되고 결과적으로 (”item”) == Item 클래스명 참고하여 item으로 바꿈이 성립되게 되는 것이다.
public String addItemV4(Item item)
더 나아가 이렇게 @ModelAttribute 자체도 생략이 가능하다. 대상 객체는 모델에 자동으로 등록이 된다고 한다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : Post, Redirect, Get 사용하기 (0) | 2022.02.03 |
---|---|
[Spring Boot] : 상품 수정 구현하기 (0) | 2022.02.03 |
[Spring Boot] : 상품 상세 페이지 타임리프 적용 및 목록으로 가기 구현 (0) | 2022.02.03 |
[Spring Boot] : thymelef, 타임리프 간단 사용법 (0) | 2022.02.02 |
[Spring Boot] : 요구사항에 맞춰 상품 도메인을 개발하고 테스트 코드를 작성하기 (0) | 2022.02.02 |
댓글