2012-04-04 7 views
2

私はPrimefaces Datatableを使用するページを持っていますが、基本的にはManagedBeanがデータベースにクエリを行い、情報をDataTableにレポートとして表示し、フィルタにfilterByオプションを使用します。Primefaceでセッションを維持する方法DataTableフィルタ

情報は自動的に更新されます。ページの更新によってシステムがページを再読み込みし、システムがフィルタに入力された情報を失ってしまい、ユーザーが再度フィルタに入力しなければなりません。

私はユーザーが入力した情報を保持する必要がある、私は私のページのフィルタのセッションを維持する必要があると思う、私はそれが私の問題を解決できると思います。

+0

@ sapc1313031セッションスコープとしてBeanを用意してください。 – Kevin

+0

通常は、戻るボタン/新しいウィンドウセーフではないので、セッションスコープを避けるのが最善です。 JSF 2.0では、View Scope、Flash Scopeなどの代替案が使用できます。あるいは、TomahawkのsaveStateタグを使用して、ページリクエスト間の状態を維持することもできます – BestPractices

答えて

4

この時点では、PrimeFacesはデータテーブルのフィルタ値の保存をサポートしていないように見えます(PF 3.2以降)。

代わりに、列のヘッダーファセットを実装し、その中にフィルタを実行するバッキングBeanのメソッドにバインドされた入力フィールドを追加することをお勧めします。このようにして、View Scopeの管理対象BeanまたはTomahawkのsaveStateコンポーネントを使用して、フィルタフィールドの値をView Scopeに格納できます。入力フィールドはap:ajaxコンポーネントで設定することができます(そしておそらく)、ユーザがフィールドの値を変更したときにバッキングBeanメソッドが呼び出されるので、フィルタはまったく同じように動作しますp:columnのfilterBy属性を使用して実装しました。

私はfilterByに日付用のポップアップカレンダーを使用したいと思っていたときに上記を行いました。これはかなりうまく動作します。

関連する問題