sortMode="multiple" und faul="true" in p: dataTable löscht während der Paginierung das Multisort-Meta

8

Ich habe gerade die Mehrfachsortierung im Showcase-Code für " DataTable - Lazy Loading "

aktiviert >

datatableLazy.xhtml

%Vor%

TableBean.java

%Vor%

LazyCarDataModel.java

%Vor%

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:

  1. Klicken Sie auf den Sortierpfeil in "Hersteller" und dann Strg + Klick auf den Sortierpfeil von "Jahr"

    • Sie würden die Details der Sortierspalte auf die Methode load() bekommen (ich habe den Eingabeparameterwert in der load-Methode ausgedruckt).
  2. Jetzt paginieren. Hier kann die load() -Methode nicht das Sortierspalten-Detail

    angeben
    • Nicht nur für die Paginierung, wenn Sie Spaltenfilterwerte eingeben, nachdem Sie auf die Sortierspalten geklickt haben, gibt es das gleiche Problem

Wie kann ich das beheben?

    
senthil_sss 18.03.2013, 04:53
quelle

2 Antworten

2

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 ...

    
senthil_sss 12.06.2013, 05:27
quelle
0

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.

    
YamYamm 20.10.2015 12:17
quelle