我也遇到了這個問題,並且我開發了一種可能有用的編碼模式。它並不是一個真正的PrimeFaces(我正在使用它) - 更多使用JSF 2使用書籤鏈接的技術。
在標記中,我包含頁面的所有參數,如下所示:
<f:metadata>
<f:viewParam name="orderID" value="#{bean.orderID}" />
<f:viewParam name="sortMode" value="#{bean.sortMode}" />
<f:viewParam name="firstRecord" value="#{bean.firstRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
</f:metadata>
這些值中的每一個都在backing bean中支持,因此如果它們未設置,它們將生成一個合適的默認值。例如:
現在你實現用戶控制,以改變這些值,並且它們每一個被改變的時間重新生成的表:
public int getPageSize() {
if (pageSize < MIN_PAGE_SIZE) pageSize = DEF_PAGE_SIZE;
if (pageSize > MAX_PAGE_SIZE) pageSize = DEF_PAGE_SIZE;
return pageSize;
}
甲連結此視圖可如下生成。你應該仍然使用AJAX爲 - 例如:
<p:spinner value=#{bean.pageSize} >
<p:ajax update="tableID" />
</p:spinner>
在setter方法,你必須觸發重新生成的表,但是這是它的要點。我希望這有幫助。
UPDATE:
爲了處理分頁,你只需要添加的第一頁,前一頁,下頁,等等鏈接的鏈接將是這個樣子:
<h:link value="First Page" outcome="thisPage">
<f:param name="orderID" value="#{bean.orderID}" />
<f:param name="sortMode" value="#{bean.sortMode}" />
<f:param name="firstRecord" value="0" />
<f:param name="pageSize" value="#{bean.pageSize}" />
</h:link>
<h:link value="Next Page" outcome="thisPage">
<f:param name="orderID" value="#{bean.orderID}" />
<f:param name="sortMode" value="#{bean.sortMode}" />
<f:param name="firstRecord" value="#{bean.nextRecord}" />
<f:param name="pageSize" value="#{bean.pageSize}" />
</h:link>
等你需要在後臺bean中實現屬性來計算參數應該是什麼。
thx,是有頁和排序參數視圖params是我比ajax更喜歡。但我的問題是更多關於如何處理分頁和使用這種方法使用primefaces中的數據加載數據進行排序。 – fischermatte 2012-03-18 20:48:50
@fischermatte查看更新。 – AlanObject 2012-03-18 23:24:42
仍然 - 你如何告知primefaces數據表中的paginator和排序按鈕,他們不應該執行ajax請求,而是用這些參數調用新的頁面請求?我看到的唯一解決方案就是用這樣的排序和分頁編寫自己的數據表組件。但如果我是第一個遇到這個問題的人,我真的很好奇。從我的角度來看,這是應該由組件框架處理的功能。 – fischermatte 2012-03-19 08:24:43