ste*_*eve 5 java spring vaadin vaadin8
我有一个接受PAGE和SIZE参数的现有REST服务
/fetchrecords?page=0&size=10
Run Code Online (Sandbox Code Playgroud)
反过来,它创建一个Spring Pageable与Spring Repository一起使用.
Pageable pageRequest = new PageRequest(page, size, Sort.Direction.DESC, "created");
Run Code Online (Sandbox Code Playgroud)
我现在想要使用Vaadin 8 CallbackDataProvider,但它会产生OFFSET和LIMIT以用于BackendDataProvider.
dataProvider = new CallbackDataProvider<MyPojo, Void>(
query -> service.fetchrecords(query.getOffset(), query.getLimit()).stream(),
query -> service.getCount());
Run Code Online (Sandbox Code Playgroud)
当然这不会作为offset!= page工作,并且根据偏移位置,限制值将根据剩余的记录数而改变.
如果不重写其余/服务,我怎样才能正确地从DataProvider OFFSET和LIMIT转到PAGE和SIZE?
我有同样的问题。带有偏移和限制的 Vaadin 分页比带有页面和页面大小的分页更强大(如在 REST 服务和 spring 类 PageRequest 中)。所以,你的问题的答案是:你不能轻易做到。如果您可以更改 REST 服务参数以进行偏移和限制,那么您可以实现自己的参数,Pageable例如:
public class Range implements Pageable, Serializable {
private static final long serialVersionUID = 0L;
private int limit;
private long offset;
private Sort sort;
public Range(long offset, int limit, Sort sort) {
...
}
@Override
public long getOffset() {
return offset;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这不能开箱即用。
另一种选择是将偏移/限制映射到可能包含所需数据范围的多个页面,然后获取这些页面并仅获取必要的数据。
请注意:这不适用于 Vaadin 通过 Spring Data Neo4j 访问 Neo4j 时请求的最后一个页面。SDN v5.2.8将使用以下代码应用“skip”来查询
parameters.put(SKIP, pageable.getPageNumber() * pageable.getPageSize());
Run Code Online (Sandbox Code Playgroud)
使用getPageNumber是一个问题,例如偏移量 100 和限制 23 会导致跳过 92。提交了问题。
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |