2016-11-15 6 views
3

私はかなりJavaとSpringの新しいです。スプリング付きページングオプション

私が実装したいのは、ページ分割とソートを伴うAPIエンドポイント/ticketsです。私はそれを作ったし、それは動作します。しかし、私がしたいのは、sizepageがクエリパラメータで指定されていない場合、すべてのチケットのプレーンリストを返すことです。そのため、FEではselectboxでそのリストを使用できます。

私が試みたのは、サービスファサードにgetTicketsを実装し、すべてのチケットのリストを返すことでした。しかし、私は、それは常にデフォルト値(サイズ= 20、ページ= 0)

//コントローラ

@RequestMapping(method = RequestMethod.GET) 
public ResponseEntity<Page<TicketListItemResponseModel>> getTickets(Pageable pageable) { 
    logger.info("> getTickets"); 
    Page<TicketListItemResponseModel> tickets = ticketServiceFacade.getTickets(pageable); 
    logger.info("< getTickets"); 
    return new ResponseEntity<>(tickets, HttpStatus.OK); 
} 

// TicketServiceFacade

を返すようページング可能に設定されているかどうかを確認する方法方法を見つけることができませんでした
public Page<TicketListItemResponseModel> getTickets(Pageable pageable) { 
    Page<Ticket> tickets = ticketService.findAll(pageable); 
    return tickets.map(new ConverterFromPagesToListItem()); 
} 

public List<TicketListItemResponseModel> getTickets() { 
    List<Ticket> tickets = ticketService.findAll(); 
    return tickets.stream() 
      .map(t -> modelMapper.map(t, TicketListItemResponseModel.class)) 
      .collect(Collectors.toList()); 
} 

おそらく私はそれは完全に間違っていますか?あなたがそうのようなあなたのコントローラメソッドを構築した場合

答えて

3

、あなたはリクエストパラメータをチェックすることによって、あなたはページングを実装するかどうかを管理することができます。

@Override 
public ResponseEntity<Page<TicketListItemResponseModel>> getTickets(
     @RequestParam(value = "page", defaultValue = "0", required = false) int page, 
     @RequestParam(value = "count", defaultValue = "10", required = false) int size, 
     @RequestParam(value = "order", defaultValue = "ASC", required = false) Sort.Direction direction, 
     @RequestParam(value = "sort", defaultValue = "name", required = false) String sortProperty) { 
    // here you would check your request params and decide whether or not to do paging and then return what you need to return 
} 

を、あなたのサービスに渡すためにPageRequestを構築する必要がある場合手動で行うこともできます。

new PageRequest(page, size, new Sort(direction, sortProperty)); 
関連する問題