Spring Boot:以 Pageable 作为请求参数的 @GetMapping 无法按预期工作
Posted
技术标签:
【中文标题】Spring Boot:以 Pageable 作为请求参数的 @GetMapping 无法按预期工作【英文标题】:Spring Boot: @GetMapping with Pageable as request parameter don't work as expected 【发布时间】:2020-01-17 05:59:53 【问题描述】:我正在使用 Spring Boot 2,并且我在 @GetMapping
中编写了一个 @RestController
,它以 Pageable
作为参数。
@GetMapping
public ResponseEntity<Page<AppointmentTO>> findAll(Pageable pageable)
Page<AppointmentTO> page = appointmentService.findAll(pageable);
return ResponseEntity.ok(page);
问题如下:
通过每个请求,queries-parameters pageSize
和 offset
在到达 Spring Boot 后端 (?offset=0&pageSize=20
) 时始终重置为默认值,但是我在我的请求的网址(例如?offset=15&pageSize=5
)。
【问题讨论】:
【参考方案1】:Spring Boot 将请求参数映射到扩展 AbstractPageRequest
的 org.springframework.data.domain.PageRequest
AbstractPageRequest implements Pageable, Serializable
...
private final int page;
private final int size;
public long getOffset()
return (long)this.page * (long)this.size;
...
您应该使用以下网址:
http://localhost:8080?page=3&size=5
您也可以通过 ...&sort=name 添加排序
【讨论】:
或者自定义参数名称:docs.spring.io/spring-data/jpa/docs/current/reference/html/…和docs.spring.io/spring-data/commons/docs/current/api/org/…以上是关于Spring Boot:以 Pageable 作为请求参数的 @GetMapping 无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot - Jpa Distinct 和 Pageable
如何记录Spring Boot JPA Pageable绑定值?
Spring Boot,MongoDB,Pageable,按对象中的自定义方法排序
Spring Boot:Slice/Pageable 未根据页面返回正确的块