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

8tntrjer  于 2024-01-05  发布在  Spring
关注(0)|答案(2)|浏览(160)

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

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

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

guicsvcw

guicsvcw1#

Sping Boot 将请求参数Map到扩展AbstractPageRequestorg.springframework.data.domain.PageRequest

  1. AbstractPageRequest implements Pageable, Serializable {
  2. ...
  3. private final int page;
  4. private final int size;
  5. public long getOffset() {
  6. return (long)this.page * (long)this.size;
  7. }
  8. ...

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

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


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

展开查看全部
a9wyjsp7

a9wyjsp72#

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

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

字符串

样品申请:

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

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

  1. {
  2. "content": [
  3. ...
  4. ],
  5. "pageable": {
  6. "sort": {
  7. "empty": false,
  8. "sorted": true,
  9. "unsorted": false
  10. },
  11. "offset": 10,
  12. "pageNumber": 2,
  13. "pageSize": 5,
  14. "paged": true,
  15. "unpaged": false
  16. },
  17. "last": false,
  18. "totalPages": 12,
  19. "totalElements": 58,
  20. "size": 5,
  21. "number": 2,
  22. "sort": {
  23. "empty": false,
  24. "sorted": true,
  25. "unsorted": false
  26. },
  27. "numberOfElements": 5,
  28. "first": false,
  29. "empty": false
  30. }

展开查看全部

相关问题