Ich habe gerade die Mehrfachsortierung im Showcase-Code für " DataTable - Lazy Loading "
aktiviert > datatableLazy.xhtml
TableBean.java
LazyCarDataModel.java
Es funktioniert gut, außer wenn ich mit mehreren Spalten sortiere, gibt mir die Methode load()
mit List<SortMeta>
nicht die Spaltendetails, die zur Übertragung auf die andere Seite sortiert sind, im Gegensatz zur Methode load()
mit String sortField, SortOrder sortOrder
gibt diese Sortierdetails an.
Zum Beispiel:
Klicken Sie auf den Sortierpfeil in "Hersteller" und dann Strg + Klick auf den Sortierpfeil von "Jahr"
load()
bekommen (ich habe den Eingabeparameterwert in der load-Methode ausgedruckt). Jetzt paginieren. Hier kann die load()
-Methode nicht das Sortierspalten-Detail
Wie kann ich das beheben?
Ich habe diese Frage vorübergehend gelöst ... Eine sessionscoped-gesteuerte Bean zum Speichern der Details der Sortierspalte haben, um während der Paginierung in load () zu gelangen, wie: -
%Vor%und benutze es in load () wie folgt:
%Vor%Ich hoffe, du hast erfahren, wie ich damit umgegangen bin, wenn nicht intim ... aber das ist ein vorübergehender Weg, muss es durch die Hauptoberflächen so umgehen ...
Mit diesem Ansatz können Sie die eigentliche Operation problemlos an Primefaces in Ihrem lazyDataModel delegieren. Dadurch behalten Sie Ihre Codebasis klarer, da Sie keine anderen Klassen betreiben müssen und Sie die bereits entwickelten Komponenten wiederverwenden (was Sie ohnehin sollten).
Wenn Sie den PrimeFaces-Quellcode untersucht haben, sehen Sie, dass DataTable für jede seiner Funktionen konkrete Klassen wie Filtern, Sortieren, Expandieren usw. verwendet. Zum Sortieren von Primefaces wird eine Klasse namens BeanPropertyComparator
verwendet, für die bestimmte Eigenschaften erforderlich sind sein Konstruktor, aber die meisten dieser Attribute können vom sortMeta
-Attribut an die load
-Methode von lazyDataModel gesendet werden. Wenn Sie jedoch alle Attribute erhalten möchten, benötigen Sie das DataTable-Objekt, das Sie von FacesContext
erhalten, wenn Sie die clientseitige ID der fraglichen DataTable kennen.
Angenommen, Sie haben die Datentypeninstanz in einer Variablen mit dem Namen activeTable
. Alles, was Sie tun müssen, ist:
%Vor%
Auf diese Weise unterstützt Ihre Sortierung standardmäßig alle Funktionen, die die standardmäßige Standardfunktion unterstützen, ohne die Sicherheit zu beeinträchtigen.
Tags und Links datatable lazy-loading sorting jsf-2 primefaces