Ajax事件在pagination与Primefaces dataTable不工作



我有一个"normal"使用数据表进行分页。第一次"载入"从数据库中取出25个条目。在ajax页面中事件我带来以下元素在块25项。在5.1版本的Primefaces中,一切都工作得很好,但是在5.2版本中,没有调用onPageChange方法,实际上分页什么也不做。

如果在ajax事件"page"我添加process="@this"它确实调用bean,但不是指定的onPageChange方法,而是一个用@PostConstruct注释标记的开始方法(这样,相同的前25项和分页总是显示这些项)。

<p:panel id="..."
header="..."
style="..."
toggleable="true"
toggleSpeed="200" >
<p:dataTable var="some_var"
id="myDataTable"
widgetVar="pag"
first="#{[bean].first}" <-- bean attribute
value="#{[bean].collectionOfObjects}"  <-- loading of the first 25 elements
rows="20"
paginator="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
emptyMessage="..."
lazy="true"
rowIndexVar="rowIndex"
rowStyleClass="#{(rowIndex mod 2) eq 0? '...' : '...'}">
<p:ajax event="page"
listener="#{[bean].onPageChange}"/> <-- load the next 25 items (successively)
<p:ajax event="sort"
listener="#{[bean].orderListing}"/>
<p:column width="..."
headerText="..."
style="..."
sortBy="#{some_var.id}"
id="...">
...
</p:column>
[rest of columns]
</p:dataTable>
</p:panel>

背面(仅作为轮廓):

@PostConstruct
protected void init() {
...
this.collectionOfObjects = new GenericLazyModel<CollectionOfObjects>(...);
}
//Method not called by ajax.
public void onPageChange(PageEvent event) {
//Next 25 items
this.collectionOfObjects = new GenericLazyModel<CollectionOfObjects>(...);
}

版本号:primefaces 5.2, jsf-api 2.2.2, jsf-impl 2.2.2(更新后两个版本将非常昂贵)。

在这篇文章中有几种可能性,但在仔细阅读了所有内容后,我还没有设法解决这个错误。

commandButton/commandLink/ajax action/listener方法未调用或输入值未设置/更新

非常感谢大家!

最后,经过几次测试,我已经将PF版本更新到5.3,它已经工作了。更新到5.3版本时的错误不是来自应用程序本身,而是来自必须更新到v4.0.0(至少)的primefaces-extensions库。如果有人在更新PF库时遇到问题,也可以检查primefaces-extensions的版本。

最新更新