查询参数值未绑定到 Spring 可分页

Query parameter values does not bind to Spring Pageable

我的 spring 引导应用程序控制器包含一个如下所示的带有可选 Pageable 参数的方法。

@RequestMapping(method = RequestMethod.GET)
@Override
public Page<MarkupView> getAllMarkup(Pageable pageable) {
    System.out.println("Page size" + pageable.getPageSize() ) // prints 20
    return markupService.getAllMarkups(pageable);
}

我的问题是当我使用 swagger-ui 传递查询参数时,这些值没有绑定到可分页对象。为什么我这么说是因为无论我将值 5 作为查询参数传递,它都会将 pageSize 打印为 20。

请求URL: http://localhost:8080/api/markups?offset=2&pageNumber=1&pageSize=5

以上获取请求 returns 我的页面对象,其中包含所有 MarkupView 记录。

我不确定你为什么那样实现它。我宁愿按原样接收请求参数,然后将它们设置在 pojo 中,而不是这样做。我在我的机器上对此进行了测试,它会按预期进行绑定。看看下面的实现是否有帮助!

  @GetMapping("/api/markups")
  @Override
  public Page<MarkupView> getAllMarkup(final @RequestParam(name = "pageSize", required = false) Integer pageSize, final @RequestParam(name = "offset", required = false) Integer offset, final @RequestParam(name = "pageNumber", required = false) Integer pageNumber) {
    System.out.println("Page size" + pageSize ); 
    System.out.println("offset" + offset );
    System.out.println("Page number" + pageNumber );
    return markupService.getAllMarkups(pageSize,offset,pageNumber);
  }

参考Spring Data Web Support的第5节。请检查您是否遵循上述配置。然后将查询参数名称从 pageNumber 更新为 page,将 pageSize 更新为 size