我想使用Spring工具来实现我的分页 . 我目前没有底层数据库,并希望从页面中提供的虚拟列表中提供请求 . REST控制器中的请求如下所示:
@Override
@ResponseStatus(HttpStatus.OK)
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public Page<ComponentDto> getComponents(@RequestParam("searchTerm") Optional<String> searchTerm, Pageable pageRequest) {
return componentService.getComponents(searchTerm, pageRequest);
当我卷曲或使用swagger发送请求时,总是使用pagable的默认值,而不是给定的请求参数大小,页面和排序等等 . 请求URL如下所示:
http://localhost:8090/zoo-service/v1/components?pageNumber=2&pageSize=2
是否有必要自动完成映射?另一个问题是,如果我为页面和大小使用两个int参数,并使用静态PageRequest调用来向我的服务提供Pageable . 评估和页面创建如下:
if (searchTerm.isPresent() && StringUtils.isNoneBlank(searchTerm.get())) {
List<ComponentDto> list = componentMockProvider.getMockedComponents().stream().filter(it -> it.getName().contains(searchTerm.get())).collect(Collectors.toList());
result = new PageImpl<ComponentDto>(list, pageRequest, list.size());
}
else{
result = new PageImpl<ComponentDto>(componentMockProvider.getMockedComponents(), pageRequest, componentMockProvider.getMockedComponents().size());
}
return result;
页面始终提供完整的内容列表,但分页信息是正确的 . 所以我的列表包含6个元素,我想要第二页,页面大小为3,页面知道这个信息之二传递的内容仍然是包含6个元素的完整列表 .
我希望你能得到我的问题,谢谢你的帮助!
1 回答
我想出了如何处理分页 . 对于第一个问题,我只有一个招摇的问题,它提供了pageSize和pageNumber作为参数 . 这是Pageable无法解决params的第一个问题 . 对于第二个问题,我自己实现了内容的计算,并将计算列表作为内容传递给PageImpl构造函数 .