수정에 필요한 정보를 조회하고, 수정용 폼 뷰를 호출해보자.
basic 폴더에 넣어주고 수정을 해주자.
th:value 값을 넣어주자.
// BasicItemController Class
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/editForm";
}
상품 수정이 잘 된다.
edit도 GetMapping / PostMapping 둘 다 만들어 준다.
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/editForm";
}
@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, Model model) {
}
취소 버튼을 누르면 되돌리기 위해서
basic 폴더에 editForm.html 파일에서 th:onclick="|location.href='@{/basic/items/{itemId}(itemId=${item.id})}'|"를 넣어주자.
<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>
action 경로도 넣어주자.
<div class="container">
<div class="py-5 text-center">
<h2>상품 수정 폼</h2>
</div>
<form action="item.html" th:action method="post">
edit의 PostMapping은 아래와 같이 itemRepository.update(itemId, item)으로 지정을 해준다.
@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, @ModelAttribute Item item) {
itemRepository.update(itemId, item);
return "xx";
}
- GET /items/{itemId}/edit : 상품 수정 폼
- POST /items/{itemId}/edit : 상품 수정 처리
위 코드에서 리다이렉트를 반영해주자. 네트워크 상에서도 확인을 해줘야 하는데 보이지가 않는다.
@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, @ModelAttribute Item item) {
itemRepository.update(itemId, item);
return "redirect:/basic/items/{itemId}";
}
리다이렉트
상품 수정은 마지막에 뷰 템플릿을 호출하는 대신에 상품 상세 화면으로 이동하도록 리다이렉트를 호출한다.
- 스프링은 redirect:/... 으로 편리하게 리다이렉트를 지원한다
- redirect:/basic/items/{itemId}"
- 컨트롤러에 매핑된 @PathVariable 의 값은 redirect 에도 사용할 수 있다.
- redirect:/basic/items/{itemId} {itemId} 는 @PathVariable Long itemId 의 값을
그대로 사용한다.
- HTML Form 전송은 PUT, PATCH를 지원안한다. GET, POST만 사용할 수 있고
- PUT, PATCH는 HTTP API 전송시에 사용가능하고
- 스프링에서 HTTP POST로 Form 요청할 때 히든 필드를 통해서 PUT, PATCH 매핑을 사용하는 방법이 있으나 HTTP 요청상 POST 요청이다.
<출처 김영한: 스프링 MVC 1편 - 벡앤드 웹 개발 핵심 기술>
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -
www.inflearn.com
'Spring > SpringMVC' 카테고리의 다른 글
RedirectAttributes (0) | 2022.05.05 |
---|---|
PRG Post/Redirect/Get (0) | 2022.05.05 |
상품 등록 처리 - @ModelAttribute (0) | 2022.05.04 |
상품 상세, 상품 등록 폼 뷰 & 컨트롤러 (0) | 2022.05.03 |
상품 목록 - 타임리프 (0) | 2022.05.03 |