반응형
상품 수정 구현을 해본다.
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/editForm";
}
먼저 컨트롤러에 해당 코드를 입력해 준다.
수정에 필요한 정보를 조회하고 수정용 폼 뷰를 호출하게 된다.
<div>
<label for="id">상품 ID</label>
<input type="text" id="id" name="id" class="form-control" value="1"
th:value="${item.id}" readonly>
</div>
앞에서 설정했던 타임리프를 사용하기 위해 선언하는 부분과 CSS를 가져오기 위해 사용한 부분은 적지 않았다. 상품이 수정되고 수정한 내용을 담은 model의 값을 가져올 수 있도록 th:value를 통해 값을 꺼내어 사용하게 했다.
이 외에 상품명, 가격, 수량 등 각자 맞는 th:value를 작성하면 된다.
<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>
취소를 눌렀을 때 리터럴 대체 표현식을 사용해 다시 상품 수정으로 돌아가도록 설정했다. 기존에 코딩했던 상품 등록과 상당히 유사했고 특별한 내용은 따로 없었다.
상품 수정 개발도 진행했다.
@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, @ModelAttribute Item item) {
itemRepository.update(itemId, item);
return "redirect:/basic/items/{itemId}";
}
같은 URL을 사용해도 GET과 POST로 나누어 각각 상품 수정 폼과 상품 수정 처리 기능을 담당하도록 했다. 이번에는 redirect를 사용해 주었는데 이 리다이렉트는 상품 수정을 통해 마지막에 뷰 템플릿을 호출하는 대신에 상품 상세 화면으로 이동하도록 리다이렉트를 호출해 주는 역할을 한다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : RedirectAttributes 사용하기 (0) | 2022.02.03 |
---|---|
[Spring Boot] : Post, Redirect, Get 사용하기 (0) | 2022.02.03 |
[Spring Boot] : 상품 등록 처리 @ModelAttribute 사용하기 (0) | 2022.02.03 |
[Spring Boot] : 상품 상세 페이지 타임리프 적용 및 목록으로 가기 구현 (0) | 2022.02.03 |
[Spring Boot] : thymelef, 타임리프 간단 사용법 (0) | 2022.02.02 |
댓글