查询参数值未绑定到 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
。
我的 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
。