Spring Boot:使用 Pageable 作为请求参数的 @GetMapping 无法按预期工作

Man*_*anu 2 java rest spring spring-data-jpa spring-boot

我正在使用Spring Boot 2@RestController ,并且我在 a 中编写了 a @GetMapping,它接受 aPageable作为参数。

@GetMapping
public ResponseEntity<Page<AppointmentTO>> findAll(Pageable pageable) {
    Page<AppointmentTO> page = appointmentService.findAll(pageable);
    return ResponseEntity.ok(page);
}
Run Code Online (Sandbox Code Playgroud)

问题如下:

对于每个请求,查询参数 pageSizeoffset总是在到达 Spring Boot 后端 ( ?offset=0&pageSize=20) 时重置为默认值,但是我在请求的 url 中发送不同的参数(?offset=15&pageSize=5例如)。

i.b*_*nko 7

Spring Boot 将请求参数映射到org.springframework.data.domain.PageRequest扩展AbstractPageRequest

  AbstractPageRequest implements Pageable, Serializable {
    ...
    private final int page;
    private final int size;

    public long getOffset() {
        return (long)this.page * (long)this.size;
    }
    ...
Run Code Online (Sandbox Code Playgroud)

您应该使用以下网址:

http://localhost:8080?page=3&size=5
Run Code Online (Sandbox Code Playgroud)

您还可以添加按 ...&sort=name 排序