상품 수정
상품 상세 페이지에서 상품 수정을 클릭했을 때의 "상품 수정"을 구현해본다.

상품 수정도 상품 등록과 유사하게 동일한 url("/{itemId}/edit") 에 대해 GetMapping과 PostMapping으로 메서드를 구현한다.
@GetMapping("/{itemId}/edit") : 단순 조희. 수정하려는 현재 item의 정보 조회

@PathVariable로 요청 url로 들어온 상품id와 Model을 파라미터로 갖는다.
itemId로 itemRepository에서 item 찾는다. Model에 찾은 item을 넣는다.
"basic/editForm" 페이지로 Model 전달한다!("basic/editForm 페이지로 이동)
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId,Model model){
Item item = itemRepository.findById(itemId);
model.addAttribute("item",item);//뷰에 전달할 객체 item!
return "basic/editForm";//editForm 페이지로 데이터 전달한다!
}
2. @PostMapping("/{itemId}/edit") : 정보 수정. HTML Form을 Post 방식으로 전송!
@GetMapping과 마찬가지로 @PathVariable itemId를 가져온다.
수정할 데이터를 전송받는 것이기 때문에 @ModelAttribute를 이용하여 데이터들을 item 객체로 받는다!
itemRepository에 받은 객체 item을 update메서드 호출, 실행한다.
"/basic/items/{itemId}"로 리다이렉트한다!
@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, @ModelAttribute Item item){
itemRepository.update(itemId,item);
return "redirect:/basic/items/{itemId}";
}
Last updated
Was this helpful?