ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상품 웹 사이트 - 상품 수정
    스프링/스프링 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:라는 문자가 앞에 있다. 리다이렉트로 인해서 수정된 아이템 아이디로 리다이렉트된다.

     

     

     

    상품 상세를 보면 리다이렉트가 잘 되었다.

     

     

    목록에서도 잘 바뀌어져 있었다.

Designed by Tistory.