상품 웹 계층 개발
DTO
@Getter @Setter
public class BookForm {
private Long id;
private String name;
private int price;
private int stockQuantity;
private String author;
private String isbn;
}컨트롤러
@Controller
@RequiredArgsConstructor
public class ItemController {
private final ItemService itemService;
/**
* 상품 등록 뷰
*/
@GetMapping("/items/new")
public String createForm(Model model) {
model.addAttribute("form", new BookForm());
return "items/createItemForm";
}
/**
* 상품 등록 뷰에서 넘어온 데이터로 상품 저장
*/
@PostMapping("/items/new")
public String create(BookForm form) {
Book book = new Book();
book.setName(form.getName());
book.setPrice(form.getPrice());
book.setStockQuantity(form.getStockQuantity());
book.setIsbn(form.getIsbn());
book.setAuthor(form.getAuthor());
itemService.saveItem(book);
return "redirect:/";
}
/**
* 상품 목록
*/
@GetMapping("/items")
public String list(Model model) {
model.addAttribute("items", itemService.findItems());
return "items/itemList";
}
/**
* 상품 수정 뷰
*/
@GetMapping("/items/{itemId}/edit")
public String updateItemFrom(@PathVariable("itemId") Long itemId, Model model) {
Book item = (Book) itemService.findOne(itemId);//Book은 Item 하위 타입
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";
}
/**
* 상품 수정 뷰에서 넘어온 데이터로 상품 수정
* 상품 수정, 권장 코드
*/
@PostMapping(value = "/items/{itemId}/edit")
public String updateItem(@PathVariable("itemId") Long itemId, @ModelAttribute("form") BookForm form) {
itemService.updateItem(itemId, form.getName(), form.getPrice(), form.getStockQuantity());
return "redirect:/items";
}
/*
@PostMapping("/items/{itemId}/edit")
public String updateItem(@ModelAttribute("form") BookForm form, @PathVariable("itemId") String itemId) {
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";
}
*/
}변경 감지와 병합

Last updated