【问题标题】:Spring Pagination : param mapping and page result issuesSpring Pagination:参数映射和页面结果问题
【发布时间】:2018-12-28 14:32:11
【问题描述】:

我想使用 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);

当我 curl 或使用 swagger 发送请求时,始终使用可分页的默认值,而不是给定的大小和页面以及排序等请求参数。 请求 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 个元素的完整列表。

希望您能明白我的问题,感谢您的帮助!

【问题讨论】:

  • 你的分页参数是什么?页面和大小?您可以发布您点击的网址
  • 添加了请求 URL。 swagger 还为我提供了更多参数来指定偏移量、分页和排序

标签: spring-boot pagination spring-data


【解决方案1】:

我想出了如何处理分页。对于第一个问题,我只有一个大摇大摆的问题,它提供了 pageSize 和 pageNumber 作为参数。这是 Pageable 无法解析参数的第一个问题的问题。对于第二个问题,我自己实现了内容的计算并将计算的列表作为内容传递给 PageImpl 构造函数。

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多