목표
상품명, 가격, 수량을 적어주고 "상품 등록" 버튼을 눌러주면 상품 목록에 추가 되도록 하기
개발
방법1- @RequestParam을 이용
@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";
}
1) @RequestParam 을 이용해서 itemName,price,quantity 요청 파라미터 데이터를 해당 변수에 받는다.
2) Item 객체를 생성하고 setter를 통해 변수를 넣어주고 itemRepository를 통해 저장한다.
3) 저장된 item을 모델에 담아서 뷰에 전달.
방법2 - @ModelAttribute
@PostMapping("/add")
public String addItemV2( @ModelAttribute("item") Item item, 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";
}
@ModelAttrubute ==>요청 파라미터의 값을 프로퍼티 접근법(Setxxx)으로 입력해준다.
따라서 setter를 이용해서 변수를 다 저장해줄 필요가 없다.
또한 @ModelAttrubute는 모델에 @ModelAttrubute로 지정한 객체를 자동으로 넣어준다. 따라서 model.addAttribute생략 가능
방법3 - ㅡModelAttribute이름 생략
@PostMapping("/add")
public String addItemV3( @ModelAttribute Item item, Model model) {
itemRepository.save(item);
return "basic/item";
}
****이번에는 @ModelAttrubute("item")에서 ("item")를 생략했다.
이런 경우에는 모델에 저장될 때 클래스명을 사용한다.
이때 클래스의 첫글자만 소문자로 변경해서 등록한다.
ex) Item ==> item
방법4 - ModelAttribute 전체 생략
@PostMapping("/add")
public String addItemV4(Item item) {
itemRepository.save(item);
return "basic/item";
}
기존의 ModelAttrubute도 생략이 가능하다.
대상 객체는 모델에 자동으로 등록된다.
<실행결과>
'BackEnd > spring' 카테고리의 다른 글
간단한 Web페이지 프로젝트(6) - PRG Post/Redirect/Get (0) | 2024.07.07 |
---|---|
간단한 Web페이지 프로젝트(5) - 상품 수정 (0) | 2024.07.06 |
간단한 Web페이지 프로젝트(3)- 상품 상세 (0) | 2024.07.05 |
간단한 Web페이지 프로젝트(2)-상품 목록(타임리프) (1) | 2024.07.05 |
간단한 Web페이지 프로젝트(1)-상품 도메인 개발 (0) | 2024.07.03 |