Один из способов сделать это - добавить logi c в вашем классе PageRequest
, чтобы "разрезать" входящий список в зависимости от параметра метода Pageable
и вернуть его как org.springframework.data.domain.PageImpl
.
Вот метод stati c, который вы можете использовать в вашем PageRequest
классе:
public static <E> Page<E> returnPagedList(Pageable pageable, List<E> listOfEntities) {
List<E> listToReturn = listOfEntities;
if (pageable.isPaged()) {
int pageSize = pageable.getPageSize();
int currentPage = pageable.getPageNumber();
int startItem = currentPage * pageSize;
if (listOfEntities.size() < startItem) {
listToReturn = Collections.emptyList();
} else {
int toIndex = Math.min(startItem + pageSize, listOfEntities.size());
listToReturn = listOfEntities.subList(startItem, toIndex);
}
}
return new PageImpl<>(listToReturn, pageable, listOfEntities.size());
}
Затем вы можете сделать это в своем хранилище (обратите внимание, что вы получаете объект Pageable
):
public Page<Item> findItems(Pageable pageable) {
EntityManager em = getEntityManager();
List<Item> list = ... // get list of all Items
return PageRequest.pagedList(pageable, list);
}
}