primefaces实时滚动与Lazy加载兼容

时间:2014-03-05 10:26:05

标签: jsf-2 primefaces datatable

我有一个数据表,需要显示大量的数据集。所以我决定使用primefaces实时滚动。我还要知道,为了提高数据集性能,我们需要实现延迟加载的大型数据集。参考主要展示了一些例子 here,我在声明中观察到的内容

  

,在分页,排序,过滤或实时滚动发生时,需要实现LazyDataModel来查询数据源

提到了实时滚动,但是我看不到处理滚动的代码。它只有处理排序,过滤,行数和分页的代码。如果实时scolling和lazy datamodel实现兼容,有人请澄清我的困惑彼此或者我应该添加一些代码来处理实时滚动。

2 个答案:

答案 0 :(得分:7)

它与你的分页完全一样。

这是一个小例子:

XHTML

<p:dataTable var="user"
        value="#{bean.lazyDataModel}"
        scrollRows="20"
        liveScroll="true"
        scrollHeight="500"
        lazy="true"
        scrollable="true">

        <p:column headerText="name">
           <h:outputText value="#{user.name}" />
        </p:column>

</p:dataTable>

@ManagedBean
@ViewScoped
public class Bean {

    private LazyDataModel<User> lazyDataModel;

    @EJB
    UserEJB userEJB;

    @PostConstruct
    public void init() {
       lazyDataModel = new LazyUserModel(userEJB);
    }

    public LazyDataModel<User> getLazyDataModel() {
        return lazyDataModel;
    }

    public void setLazyDataModel(LazyDataModel<User> lazyDataModel) {
       this.lazyDataModel = lazyDataModel;
    }

   //setters and getters for userEJB
}

LazyUserModel

public class LazyUserModel extends LazyDataModel<User> {
   private Integer findAllCount;

   @EJB
   private UserEJB userEJB;

   public LazyUserModel(UserEJB userEJB) {
       this.userEJB = userEJB;
   }


   @Override
   public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder,
        Map<String, String> filters) {

       List<User> data = new ArrayList<User>();
       // pageSize is scrollRows="20" in the datatable
       data = userEJB.findAll(first, pageSize); 
       // findAll is using query.setFirstResult(first).setMaxResults(pageSize).getResultList()

      // rowCount
       if (findAllCount == null) {
           findAllCount = userEJB.findAllCount();
           this.setRowCount(findAllCount);
       }

       return data;
   }

}

希望这有帮助。

答案 1 :(得分:0)

在6.1中看起来有一个新的属性,liveScroll =“true” https://github.com/primefaces/primefaces/issues/2105