@GetMapping("/product/list")
public String list(PageRequestDTO pageRequestDTO, Model model) {
List<ProductDTO> productDTOList = productListService.selectBestAllForList(pageRequestDTO.getSubCateNo());
model.addAttribute(productDTOList);
return "/product/list/list";
}
기술 설명
- @GetMapping("/product/list"): GET 요청을
/product/list경로로 매핑.- <u>PageRequestDTO:
subCateNo,sortTy</u>pe,period,pg등 페이징·정렬 관련 파라미터 캡슐화.- productListService.selectBestAllForList: 전달받은
subCateNo로 베스트 상품 조회 (최근 3개월 판매순 Top 10).- model.addAttribute: 뷰(
list.html)에productDTOList전달.- return "/product/list/list":
list.html템플릿 렌더링.
@GetMapping("/product/ajaxList")
@ResponseBody
public PageResponseDTO ajaxList(PageRequestDTO pageRequestDTO, @RequestParam(defaultValue = "list") String view) {
PageResponseDTO pageResponseDTO = productListService.sortedProducts(pageRequestDTO);
pageResponseDTO.setSortType(pageRequestDTO.getSortType());
pageResponseDTO.setPeriod(pageRequestDTO.getPeriod());
pageResponseDTO.setView(view);
return pageResponseDTO;
}
기술 설명
- @GetMapping("/product/ajaxList"): GET 요청을
/product/ajaxList경로로 매핑.- @ResponseBody: 반환값을 View가 아닌 JSON 형태로 직렬화하여 응답.
- PageRequestDTO: 페이징·정렬·필터 관련 파라미터 자동 바인딩.
- productListService.sortedProducts: QueryDSL 기반 정렬된 상품 목록 조회 (Page<Tuple> → List<ProductDTO>).
- pageResponseDTO.setSortType/Period/View: 요청 파라미터 정보(
sortType,period,view)를 응답에 포함.- return PageResponseDTO: AJAX 호출 시 프론트엔드에서 사용되는 DTO(상품 목록, 페이징 정보, 정렬·기간·뷰 정보 포함).