[Spring JPA 실습 #12] 상품 수정 JPA 실습 #12] 상품 수정
- 📚 Spring/Spring JPA 실습
- 2021. 3. 11. 15:59
ItemController.java
/**
* ITEM 수정을 위한 상세화면
* @param itemId
* @param model
* @return
*/
@GetMapping("items/{itemId}/edit")
public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) {
Book item = (Book) itemService.findOne(itemId);
BookForm form = new BookForm();
form.setId(item.getId());
form.setName(item.getName());
form.setPrice(item.getPrice());
form.setStockQuantity(item.getStockQuantity());
form.setAuthor(item.getAuthor());
form.setIsbn(item.getIsbn());
model.addAttribute("form", form);
return "items/updateItemForm";
}
/**
* ITEM 수정 로직
* @param form
* @return
*/
@PostMapping("items/{itemId}/edit")
public String updateItem(@PathVariable Long itemId, @ModelAttribute("form") BookForm form) {
// 보안을 위해 조심해야한다. {itemId} 값으로 조작이 가능하기 때문에
// (요즘은 session객체를 잘 쓰지 않는다.)
Book book = new Book();
book.setId(form.getId());
book.setName(form.getName());
book.setPrice(form.getPrice());
book.setStockQuantity(form.getStockQuantity());
book.setAuthor(form.getAuthor());
book.setIsbn(form.getIsbn());
itemService.saveItem(book);
return "redirect:/items"; // 다시 조회화면으로
}
updateItemForm.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="fragments/header :: header" />
<body>
<div class="container">
<div th:replace="fragments/bodyHeader :: bodyHeader"/>
<form th:object="${form}" method="post">
<!-- id -->
<input type="hidden" th:field="*{id}" />
<div class="form-group">
<label th:for="name">상품명</label>
<input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요" />
</div>
<div class="form-group">
<label th:for="price">가격</label>
<input type="number" th:field="*{price}" class="form-control" placeholder="가격을 입력하세요" />
</div>
<div class="form-group">
<label th:for="stockQuantity">수량</label>
<input type="number" th:field="*{stockQuantity}" class="form-control" placeholder="수량을 입력하세요" />
</div>
<div class="form-group">
<label th:for="author">저자</label>
<input type="text" th:field="*{author}" class="form-control" placeholder="저자를 입력하세요" />
</div>
<div class="form-group">
<label th:for="isbn">ISBN</label>
<input type="text" th:field="*{isbn}" class="form-control" placeholder="ISBN을 입력하세요" />
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<div th:replace="fragments/footer :: footer" />
</div> <!-- /container -->
</body>
</html>
'📚 Spring > Spring JPA 실습' 카테고리의 다른 글
[Spring JPA 실습 #15] 주문목록 검색 (0) | 2021.03.13 |
---|---|
[Spring JPA 실습 #14] 상품 주문 (0) | 2021.03.13 |
[Spring JPA 실습 #11] 상품 등록 및 조회 (0) | 2021.03.10 |
[Spring JPA 실습 #10] 회원 등록 / 조회 (0) | 2021.03.10 |
[Spring JPA 실습 #9] 화면 레이아웃 설정(feat. Thymeleaf) (0) | 2021.03.09 |