将p:picklist用于大项目列表

时间:2015-03-18 20:26:14

标签: primefaces

我有使用Primefaces中的选项列表获取项目列表的当前代码:

    <p:pickList showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains"  label="#{msg.dataview_label_net}" id="pickListNet" converter="firstItemConverter" value="#{dataViewBean.net}" var="node" itemLabel="#{item.name}" itemValue="#{item}" />

但是,我在谷歌浏览器上的性能问题显示此列表。

我的后端很快,但是,为了显示Primefaces中的所有项目,渲染时间很长。是否可以在选项列表中使用一些分页或者像延迟加载一样?

我的列表中有大约3000个项目。我尝试了一个js修复来改进: https://code.google.com/p/primefaces/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Priority%20TargetVersion%20Reporter%20Owner%20Summary&groupby=&sort=&id=7655

但它对我不起作用。

3 个答案:

答案 0 :(得分:2)

此问题的最佳解决方案是尝试另一个组件,例如DataTable

我使用带有多个复选框和惰性滚动的DataTable来仅显示部分列表。我的加载时间从1分15秒减少到15秒。

答案 1 :(得分:1)

不,对不起,在撰写本文时,PrimeFaces版本不支持此功能(5.1 / 5.2-SNAPSHOT)。通过查看PrimeFaces文档可以找到它

答案 2 :(得分:0)

我正在使用primeng,并且遇到了分页问题,​​我从API提取数据,每次调用通过20个元素,解决方案是按className获取源的列表元素UL,并检查是否滚动限制,如果是,我用page + 1再次调用api并连接数据