2012-04-04 26 views
2

我有一個使用Primefaces Datatable的頁面,基本上ManagedBean查詢數據庫並在DataTable中顯示信息作爲報告,並使用選項filterBy進行過濾。如何在Primefaces DataTable上保持會話Filter

信息通過頁面刷新自動更新,我的問題是系統重新加載頁面時,系統丟失了過濾器中輸入的信息,然後用戶必須再次在過濾器中鍵入無用信息。

我需要保持用戶輸入的信息,然後我認爲我需要保持頁面過濾器的會話,我認爲它可以解決我的問題。

+0

@ sapc1313031你應該將bean作爲會話作用域嗎? – Kevin 2012-04-04 16:12:25

+0

通常最好避免會話範圍,因爲它不是後退按鈕/新窗口安全。使用JSF 2.0,可以使用諸如View Scope,Flash Scope等替代方法。或者,您可以使用Tomahawk的saveState標記來維護頁面請求之間的狀態 – BestPractices 2012-04-05 13:53:34

回答

4

似乎PrimeFaces目前不支持保存數據表的過濾器值(截至PF 3.2)。

建議您改爲爲該列實現一個標題構面,並在其中添加一個綁定到將執行過濾器的支持bean上的方法的輸入字段。這樣,您就可以在View Scope中存儲過濾器字段的值(使用View Scope託管bean或Tomahawk的saveState組件)。請注意,輸入字段可以(也許應該)使用ap:ajax組件進行設置,以便當用戶更改字段上的值時,將調用backing bean方法,以便過濾器執行與原來相同的操作你使用p:column的filterBy屬性來實現它。

我已經完成了上面的工作,當我想要一個過濾器使用彈出日曆的日期,它工作得很好。