java - 当列表分页的大小输入设置为大于 15 时,Spring Data PagedListHolder 没有返回正确的 PageSize,为什么?
问题描述
我正在尝试使用PagedListHolder
Spring 实现 List 数据的分页,但是当设置输入大小大于 15 时,它现在返回预期的输出。
private List<WorklistResponse> getPaginatedResponseResult(List<WorklistResponse> worklistResponse, FilterRequest filterRequest) {
PagedListHolder<WorklistResponse> pagedListHolder = new PagedListHolder<WorklistResponse>();
pagedListHolder.setSource(worklistResponse);
pagedListHolder.setPage(filterRequest.getCurrentPage());// 1
pagedListHolder.setPageSize(filterRequest.getPageSize());// 29
System.out.println(worklistResponse.size());//total input list size 30
System.out.println(pagedListHolder.getPageSize()); // after setting size 29
System.out.println(pagedListHolder.getPageList().size());// actual page element size result is 1 which is not correct ,it should be 29
return pagedListHolder.getPageList();
}
在 classPagedListHolder
中,以下方法会影响结果:
public List<E> getPageList() {
return this.getSource().subList(this.getFirstElementOnPage(), this.getLastElementOnPage() + 1);
}
如何为任何输入获得正确的页面大小?
解决方案
您有 30 条记录,页面 1 和页面大小 29 返回 1 条记录,因为: PagedListHolder
是一个简单的状态持有者,用于处理对象列表,将它们分成页面。页码从 0 开始。
如果在结构上您的第一页是 1,则在提交页码时减去 1。例如:
pagedListHolder.setPage(filterRequest.getCurrentPage() - 1);
推荐阅读
- c# - 根据下拉列表更改网格视图的数据源
- javascript - 数组道具更新后子组件未更新
- arrays - 如何将表格再次反转为字符串?
- android - 如何使用父文档和子文档创建 Firestore 复合索引?
- react-native - 选项卡导航器聚焦
- html - 如何让 div 标签扩展以适合我的示例中的内容?
- c# - PreviousPageModel 为空
- jenkins - Jenkins Pipeline:如何为单个测试分配多个节点 - 分布式测试编排
- php - 使用phpspreadsheet将mysql表数据导出为xlsx格式,不能不导入
- scheme - 如何在 Scheme 中列出评估的所有中间步骤