[英]Ajax event in pagination with Primefaces dataTable not working
我有一個帶有數據表的“正常”分頁。 第一個“加載”從數據庫中引入 25 個項目。 在 ajax“頁面”事件中,我將以下元素放入 25 個項目的塊中。 一切都與 Primefaces 5.1 版完美配合,但在 5.2 版中沒有調用 onPageChange 方法,實際上分頁什么也不做。
如果在 ajax 事件“page”中我添加 process="@this" 它確實調用了 bean,但不是指定的 onPageChange 方法,而是一個用 @PostConstruct 注釋標記的 start 方法(這樣,前 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 的版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.