当列表分页的大小输入设置为大于 15 时,Spring Data PagedListHolder 没有返回正确的 PageSize,为啥?
Posted
技术标签:
【中文标题】当列表分页的大小输入设置为大于 15 时,Spring Data PagedListHolder 没有返回正确的 PageSize,为啥?【英文标题】:Spring Data PagedListHolder is not returning correct PageSize when size input is set greater than 15 for List Pagination,why?当列表分页的大小输入设置为大于 15 时,Spring Data PagedListHolder 没有返回正确的 PageSize,为什么? 【发布时间】:2021-12-11 17:24:16 【问题描述】:我正在尝试使用 Spring 中的 PagedListHolder
实现列表数据的分页,但是当设置输入大小大于 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();
在PagedListHolder
类中,以下方法会影响结果:
public List<E> getPageList()
return this.getSource().subList(this.getFirstElementOnPage(), this.getLastElementOnPage() + 1);
如何为任何输入获得正确的页面大小?
【问题讨论】:
【参考方案1】:您有 30 条记录,页面 1 和页面大小 29 返回 1 条记录,因为: PagedListHolder
是一个简单的状态持有者,用于处理对象列表,将它们分成页面。页码从 0 开始。
如果你的第一页在结构上是 1,那么在提交页码时减 1。例如:
pagedListHolder.setPage(filterRequest.getCurrentPage() - 1);
【讨论】:
以上是关于当列表分页的大小输入设置为大于 15 时,Spring Data PagedListHolder 没有返回正确的 PageSize,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 中带有分页的 UICollectionView 的页数