ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 계층 개발 - 상품 수정
    JPA/JPA 활용 2023. 7. 11. 18:12

    상품을 등록하고 나중에 수정할 일이 있을 때 상품을 수정하는 기능이다.

     

     

    @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";
    }

    GetMapping으로 id에 맞는 수정 페이지로 들어간다. @PathVariable 애노테이션은 itemId에 맞는 url로 연결시켜주는 역할을 한다. 상품 수정을 누르면 원래 기존 값이 뭐였는지 들어있어야하기 때문에 itemService에서 itemId로 상품을 가져온 다음에 model로 넘겨줘서 사용자가 볼 수 있게 해줘야한다.

     

    상품1의 수정페이지이다.

     

     

     

     

    @PostMapping("items/{itemId}/edit")
    public String updateItem(@PathVariable String itemId, @ModelAttribute("form") BookForm form) {
    
        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";
    }

    PostMapping으로 값을 입력하면 실제로 데이터가 바뀌는 기능이다. @ModelAttribute로 모델을 받아온다. 그리고 new Book()을 통해 새로운 책 객체를 만들고 form에다가 다시 set으로 값을 설정해준 다음에 saveItem으로 값을 저장해준다.

     

    변경할 값들을 입력해준다.

     

     

    목록을 들어가보면 값이 변경되어있다.

     

    상품 수정 관련 html은 상품 등록 html과 거의 유사하기때문에 생략하도록 하겠다.

Designed by Tistory.