본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 상품 수정 구현하기

by 오주현 2022. 2. 3.
반응형

상품 수정 구현을 해본다.

@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편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.

반응형

댓글