微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 将CallbackDataProvider偏移量和限制转换为Pageable页面和大小

我有一个接受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,但它会产生OFFSET和LIMIT以用于BackendDataProvider.

dataProvider = new CallbackDataProvideretoffset(),query.getLimit()).stream(),query -> service.getCount());

当然这不会作为offset!= page工作,并且根据偏移位置,限制值将根据剩余的记录数而改变.

如果不重写其余/服务,我怎样才能正确地从DataProvider OFFSET和LIMIT转到PAGE和SIZE?

最佳答案
我有同样的问题.具有偏移量和限制的Vaadin分页比具有页面页面大小的分页更强大(如在REST服务和Spring类PageRequest中).所以,你的问题的答案是:你不能轻易.如果您可以将REST服务参数更改为offset和limit,那么您可以实现自己的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;
    }

    ...

}

我想知道为什么这不是开箱即用的.

另一种选择是将偏移/限制映射到可能包含所需数据范围的多个页面,然后获取这些页面并仅获取必要的数据.

原文地址:https://www.jb51.cc/spring/431375.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐