상품 수정

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

상품 수정도 상품 등록과 유사하게 동일한 url("/{itemId}/edit") 에 대해 GetMapping과 PostMapping으로 메서드를 구현한다.

  1. @GetMapping("/{itemId}/edit") : 단순 조희. 수정하려는 현재 item의 정보 조회

  1. @PathVariable로 요청 url로 들어온 상품id와 Model을 파라미터로 갖는다.

  2. itemId로 itemRepository에서 item 찾는다. Model에 찾은 item을 넣는다.

  3. "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 방식으로 전송!

  1. @GetMapping과 마찬가지로 @PathVariable itemId를 가져온다.

  2. 수정할 데이터를 전송받는 것이기 때문에 @ModelAttribute를 이용하여 데이터들을 item 객체로 받는다!

  3. itemRepository에 받은 객체 item을 update메서드 호출, 실행한다.

  4. "/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?