spring Sping Boot :@GetMapping与Pageable作为请求参数不按预期工作

8tntrjer  于 5个月前  发布在  Spring
关注(0)|答案(2)|浏览(38)

我正在使用Sping Boot 2,我在@GetMapping中编写了一个@RestController,它将Pageable作为参数。

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

字符串
问题如下:
每次请求时,queries-parameterspageSizeoffset在到达Sping Boot Backend(?offset=0&pageSize=20)时总是重置为默认值,但我在请求的URL中发送了不同的参数(例如?offset=15&pageSize=5)。

guicsvcw

guicsvcw1#

Sping Boot 将请求参数Map到扩展AbstractPageRequestorg.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;
    }
    ...

字符串
您应该使用以下URL:

http://localhost:8080?page=3&size=5


你也可以添加sorting by.&sort=name

a9wyjsp7

a9wyjsp72#

Sping Boot Pageable支持以下url参数OOTB:

  • page:页码,0为第一页
  • size:页面大小
  • 排序:按字段排序
  • 方向:ASC/DESC
    样本终点:
@GetMapping
public ResponseEntity<?> getUsers(Pageable pageable) {
    try {
        return ResponseEntity.status(HttpStatus.OK).body(userService.getUsers(pageable));
    } catch (Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
    }
}

字符串

样品申请:

localhost:8080/users?page=2&size=5&sort=createdAt,DESC

样本响应(注意下面的分页数据):

{
    "content": [
       ... 
    ],
    "pageable": {
        "sort": {
            "empty": false,
            "sorted": true,
            "unsorted": false
        },
        "offset": 10,
        "pageNumber": 2,
        "pageSize": 5,
        "paged": true,
        "unpaged": false
    },
    "last": false,
    "totalPages": 12,
    "totalElements": 58,
    "size": 5,
    "number": 2,
    "sort": {
        "empty": false,
        "sorted": true,
        "unsorted": false
    },
    "numberOfElements": 5,
    "first": false,
    "empty": false
}

相关问题