primefaces 实时滚动是不是与延迟加载兼容
Posted
技术标签:
【中文标题】primefaces 实时滚动是不是与延迟加载兼容【英文标题】:Is primefaces live scrolling compatible with Lazy loadingprimefaces 实时滚动是否与延迟加载兼容 【发布时间】:2014-04-07 08:20:42 【问题描述】:我有一个需要显示大量数据集的数据表。所以我决定使用 primefaces 实时滚动。我还知道,要使用大量数据集提高数据表性能,我们需要实现延迟加载。参考primefaces 展示示例 here,我在声明中观察到的内容
,当分页、排序、过滤或实时滚动发生时,需要实现一个 LazyDataModel 来查询数据源
提到了实时滚动,但我看不到处理滚动的代码。它只有处理排序、过滤、行数和分页的代码。如果实时滚动和惰性数据模型实现都兼容,有人可以澄清我的困惑吗或者我应该添加一些代码来处理实时滚动。
【问题讨论】:
【参考方案1】:它的工作方式与分页完全相同。
这是一个小例子:
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;
希望这会有所帮助。
【讨论】:
感谢 Hatem 澄清了我的疑问。 :我发现你的解决方案有问题。我已经发布了问题here。你能看看吗。 嘿哈蒂姆!你能解释一下为什么我们应该设置 RowCount 以及目的是什么? tnx @anass 它是记录总数,这对分页(页面导航器)有帮助,在这种情况下,在 liveScroll 我不确定是否需要设置,没有试图消除呼叫.. 不过,保持相似是一个好习惯,以防您可能回到分页【参考方案2】:看起来在 6.1 中有一个新属性,liveScroll="true" https://github.com/primefaces/primefaces/issues/2105
【讨论】:
以上是关于primefaces 实时滚动是不是与延迟加载兼容的主要内容,如果未能解决你的问题,请参考以下文章
延迟加载和解析 PrimeFaces JavaScript 文件
当方法执行更新时刷新延迟加载的 Primefaces 数据表
如何在 JSF 上延迟 Primefaces AjaxStatus?