1. createForm 

 @GetMapping(value = "/order")
      public String createForm(Model model) {
          List<Member> members = memberService.findMembers();
          List<Item> items = itemService.findItems();
          model.addAttribute("members", members);
          model.addAttribute("items", items);
          return "order/orderForm";
      }

주문 폼 이동

메인 화면에서 상품 주문을 선택하면 /order를 GET 방식으로 호출한다 

주문에는 상품정보와 회원정보를 가져와야하므로 members,items 인스턴스를 생성한다 

그다음 model 객체를 통해 해당 인스턴스들을 view에 넘긴다 

 

2. order()

@PostMapping(value = "/order")
      public String order(
      @RequestParam("memberId") Long memberId,
      @RequestParam("itemId") Long itemId, 
      @RequestParam("count") int count) {
      
          orderService.order(memberId, itemId, count);
          return "redirect:/orders";
      }
}

주문할 회원과 상품 그리고 수량을 선택해서 submit 버튼을 누르면 /order URL을 POST방식으로 호출 

컨트롤러의 order() 메서드를 실행

이 메서드는 memberId(고객 식별자), itemId(주문할 상품 식별자), count(수량) 정보를 받아서 주문 서비스에 주문을 요청

주문이 끝나면 상품 주문 내역이 있는 /orders URL로 리다이렉트 

 

공부

1. @RequestParam:  http://127.0.0.1?index=1&page=2.  와 같은 형식의 URL에서 사용하는 어노테이션이다

URL 뒤에 붙은 파라미터 값을 가져올 때 사용한다 

/memberId=x & itemId=xx & count=xxx에서 x,xx,xxx의 값을 가져오는 것이라 이해하면 되려나?

 

2. redirect: 해당 URL로 다시 이동하게 해준다

 

 

3. orderList()

@GetMapping(value = "/orders")
      public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) {
          
          List<Order> orders = orderService.findOrders(orderSearch);
          model.addAttribute("orders", orders);
          return "order/orderList";
      }
}

 

4. cancelOrder()

@PostMapping(value = "/orders/{orderId}/cancel")
      public String cancelOrder(@PathVariable("orderId") Long orderId) {
      
          orderService.cancelOrder(orderId);
          return "redirect:/orders";
 } 
}

+ Recent posts