2012-04-04 5 views
2

Ich habe eine Seite, die Primefaces Datatable verwenden, im Grunde die ManagedBean Abfragen der Datenbank und zeigt Informationen in einer DataTable als Bericht und ich benutze die Option filterBy zu filtern.Wie Keep Sitzung auf Primefaces DataTable Filter

Die Informationen werden automatisch aktualisiert, durch eine Aktualisierung auf der Seite, mein Problem ist, wenn das System die Seite neu lädt, verliert das System die im Filter eingegebenen Informationen, dann muss der Benutzer erneut Inortionen im Filter eingeben.

Ich muss die Informationen vom Benutzer eingegeben, dann denke ich, dass ich die Sitzung des Filters meiner Seite behalten muss, denke ich, dass es mein Problem lösen kann.

+0

@ sapc1313031 sollten Sie Ihre Bean als Session-Bereich haben? – Kevin

+0

Es ist in der Regel am besten, den Sitzungsumfang zu vermeiden, da es nicht back button/new window safe ist. Mit JSF 2.0 gibt es Alternativen wie Ansichtsbereich, Flash-Bereich usw., die verwendet werden können. Alternativ können Sie Tomahawks saveState-Tag verwenden, um den Status zwischen den Seitenanforderungen beizubehalten – BestPractices

Antwort

4

Es scheint so zu sein, als ob PrimeFaces den Filterwert der Datentabelle zu diesem Zeitpunkt nicht unterstützt (ab PF 3.2).

Würden vorschlagen, dass Sie stattdessen eine Header-Facette für die Spalte implementieren und darin ein Eingabefeld hinzufügen, das an eine Methode in Ihrer Backing-Bean gebunden ist, die den Filter ausführt. Auf diese Weise können Sie den Wert des Filterfelds im Ansichtsbereich speichern (entweder über eine vom View-Bereich verwaltete Bean oder Tomahawks saveState-Komponente). Beachten Sie, dass das Eingabefeld mit einer ap: ajax-Komponente eingerichtet werden kann (und vielleicht sollte). Wenn der Benutzer einen Wert für das Feld ändert, wird die Backing-Bean-Methode aufgerufen, sodass der Filter genau so ausgeführt wird, wie er es getan hätte Sie haben es mit dem Attribut filterBy von p: column implementiert.

Ich habe das oben getan, wenn ich einen Filter haben wollte. Verwenden Sie einen Popup-Kalender für ein Datum und es funktioniert ganz gut.

Verwandte Themen