-
상품 웹 사이트 - 상품 수정스프링/스프링 MVC 패턴 2023. 2. 16. 16:38
@GetMapping("/{itemId}/edit") // 상품 수정 폼 public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/editForm"; }
우선 상품 수정 폼이다.
상품 수정을 누르면 상품을 수정할 수 있는 페이지로 넘어가는 코드이다.
상품 수정 폼이다.
editForm.html
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> <style> .container { max-width: 560px; } </style> </head> <body> <div class="container"> <div class="py-5 text-center"> <h2>상품 수정 폼</h2> </div> <form action="item.html" th:action method="post"> <div> <label for="id">상품 ID</label> <input type="text" id="id" name="id" class="form-control" value="1" th:value="${item.id}" readonly> </div> <div> <label for="itemName">상품명</label> <input type="text" id="itemName" name="itemName" class="form-control" th:value="${item.itemName}" value="상품A"> </div> <div> <label for="price">가격</label> <input type="text" id="price" name="price" class="form-control" th:value="${item.price}" value="10000"> </div> <div> <label for="quantity">수량</label> <input type="text" id="quantity" name="quantity" class="form-control" th:value="${item.quantity}" value="10"> </div> <hr class="my-4"> <div class="row"> <div class="col"> <button class="w-100 btn btn-primary btn-lg" type="submit">저장 </button> </div> <div class="col"> <button class="w-100 btn btn-secondary btn-lg" onclick="location.href='item.html'" th:onclick="|location.href='@{/basic/items/{itemId}(itemId=${item.id})}'|" type="button">취소</button> </div> </div> </form> </div> <!-- /container --> </body> </html>
상품 수정을 하는 페이지인데, 상품명, 가격, 수량을 변경할 수 있다. 알맞은 값들을 입력하고 저장을 누르면 상품 수정을 처리해준다.
<form action="item.html" th:action method="post">
코드를 보면 th:action 뒤에 아무런 말이 없는데 이럴때에는 url을 수정하지않고 그대로 둔다는 뜻이다.
method가 post이기 때문에 GetMapping이 아니라 PostMapping이라는 차이가 있다.
@PostMapping("/{itemId}/edit") // 상품 수정 처리 public String edit(@PathVariable Long itemId, @ModelAttribute Item item) { itemRepository.update(itemId, item); return "redirect:/basic/items/{itemId}"; // 리다이렉트 }
PostMapping으로 상품 수정을 처리해주는 코드이다.
return 값에 redirect:라는 문자가 앞에 있다. 리다이렉트로 인해서 수정된 아이템 아이디로 리다이렉트된다.
상품 상세를 보면 리다이렉트가 잘 되었다.
목록에서도 잘 바뀌어져 있었다.
'스프링 > 스프링 MVC 패턴' 카테고리의 다른 글
판매 여부 체크박스 (0) 2023.02.19 상품 웹 사이트 - 리다이렉트 (0) 2023.02.16 상품 웹 사이트 - 상품 등록 (0) 2023.02.16 상품 웹 사이트 - 상품 상세 페이지 (0) 2023.02.16 상품 웹 사이트 - 타임리프 (아이템 목록) (0) 2023.02.16