Jsf 获取<;p:dataScroller>;豆荚

Jsf 获取<;p:dataScroller>;豆荚,jsf,primefaces,datascroller,Jsf,Primefaces,Datascroller,如何在我的支持bean中获得的以下属性 页面索引(我在分页中的哪个页面上) 页数 页面索引 第一行索引 最后一行索引 我尝试了组件绑定,但是一切都返回null有很多问题,但是如果你想要这些属性,你必须间接地获取它们,因为如果你不使用lazyDataModel,dataScroller会一次获取所有数据,然后做自己的事情,永远不会调用managedBean 使用惰性负载模型。您必须快速实现org.primefaces.model.LazyDataModel,但它只有大约20行代码。在managed

如何在我的支持bean中获得
的以下属性

  • 页面索引(我在分页中的哪个页面上)
  • 页数
  • 页面索引
  • 第一行索引
  • 最后一行索引
  • 我尝试了组件绑定,但是一切都返回
    null

    有很多问题,但是如果你想要这些属性,你必须间接地获取它们,因为如果你不使用lazyDataModel,dataScroller会一次获取所有数据,然后做自己的事情,永远不会调用managedBean

    使用惰性负载模型。您必须快速实现
    org.primefaces.model.LazyDataModel
    ,但它只有大约20行代码。在managedBean上创建一个方法,返回请求的子列表;在这个托管bean中,您将获取所需的值

    import java.util.List;
    import java.util.Map;
    
    import org.primefaces.model.LazyDataModel;
    import org.primefaces.model.SortOrder;
    
    class MsgLogLazyModel extends LazyDataModel<YourPojo> {
        private static final long serialVersionUID = 1L;
        private ManagedBean mb;
    
        public MsgLogLazyModel(ManagedBean mb) {
            this.mb = mb;
        }
    
        @Override
        public List<YourPojo> load(int first, int pageSize, String sortField,
                SortOrder sortOrder,
                Map<String, Object> filters) {
            return mb.loadItens(first, pageSize, sortOrder, filters);
        }   
    }
    
    import java.util.List;
    导入java.util.Map;
    导入org.primefaces.model.LazyDataModel;
    导入org.primefaces.model.SortOrder;
    类msglogalazymodel扩展了LazyDataModel{
    私有静态最终长serialVersionUID=1L;
    私有ManagedBean mb;
    公共MsgLogLazyModel(ManagedBean mb){
    this.mb=mb;
    }
    @凌驾
    公共列表加载(int first,int pageSize,String sortField,
    SortOrder SortOrder,
    地图过滤器){
    返回mb.loadItens(第一,页面大小,排序器,过滤器);
    }   
    }
    
    YourPojo应该是要传递到dataScroller进行显示的对象

    假设必须显示的项目存储在MB属性中

    private List<YourPojo> myList;
    
    私有列表myList;
    
    现在在
    mb.loadItens()
    上,您将捕获:

  • 页面索引(我在分页中的哪个页面上)
  • intpageindex=first/pageSize

  • 页数
  • //您必须对此进行汇总,因为最后一页的iten小于pageSize

    intpagecount=(int)Math.ceil(myList.size()/newdouble(pageSize))

  • 页面索引
  • 你在重复你自己

  • 第一行索引
  • 我假设您希望返回块的第一行。这是第一个
    参数。由于dataScroller没有分页功能

  • 最后一行索引
  • //可能列表已经结束。所以我们走安全的道路…


    int lastRow=Math.min(myList.size(),first+pageSize)

    是关于普通JSF的吗?它是由它的一个组件库提供的。如果需要,也可以延迟加载。datascroller是一个组件,不存在于普通jsf中,如果您不想使用组件库,您必须使用普通html、jquery ui组件等开发自己的组件,并将其与jsf生命周期集成。最后,您必须维护一个组件“库”。您需要澄清您使用的是哪个datascroller。Richfaces和Primefaces提供类似的名称components@kolossus:primefaces dataScroller组件。滚动器组件由
    org.primefaces.component.dataScroller.dataScroller
    支持,因此您将首先将dataScroller元素绑定到支持bean中的实例。你们正在寻找的很多东西都不是现成的,所以你们需要有创意