【发布时间】:2018-01-16 22:16:27
【问题描述】:
我有一个接受 PAGE 和 SIZE 参数的现有 REST 服务
/fetchrecords?page=0&size=10
反过来,它创建了一个 Spring Pageable 以与 Spring Repository 一起使用。
Pageable pageRequest = new PageRequest(page, size, Sort.Direction.DESC, "created");
我现在想使用 Vaadin 8 CallbackDataProvider,但是它会生成用于 BackendDataProvider 的 OFFSET 和 LIMIT。
dataProvider = new CallbackDataProvider<MyPojo, Void>(
query -> service.fetchrecords(query.getOffset(), query.getLimit()).stream(),
query -> service.getCount());
当然,这不会作为 offset != 页面起作用,并且限制值会根据剩余的记录数而改变,根据偏移位置。
在不重写其余/服务的情况下,如何正确地从 DataProvider OFFSET 和 LIMIT 转到 PAGE 和 SIZE?
【问题讨论】:
-
只需从限制中减去偏移量(这会给您 pageSize),然后您可以将偏移量除以 pageSize(页面)
-
@ByeBye 如果偏移量不在页面的开头怎么办?
-
@ByeBye Vaadin DataProvider 将始终在您滚动组件(网格)时更改限制和偏移量,因此我怀疑直接基于页面/大小是不可靠的。
标签: java spring vaadin vaadin8