4 Stimmen

PrimeFaces datatable initial sortBy funktioniert nicht

Ich habe eine PrimeFaces 3.2 DataTable, die Apache MyFaces 2.0.2 verwendet. Ich möchte eine initiale Sortierung. Mein JSF sieht so aus:

                    Datatable

Aber ich bekomme eine UnsupportedOperationException: The result list is read-only. Wenn ich den sortBy-Tag lösche, funktioniert es einwandfrei.

Also meine Frage: Wie kann ich eine initiale Sortierung realisieren?

4voto

kostja Punkte 58769

Das Sortieren wird auf der Original-Liste ausgeführt. Wenn diese schreibgeschützt ist, wird eine Exception ausgelöst. Probieren Sie dasselbe, aber mit einer regulären, veränderlichen Liste

BEARBEITEN: Erstellen Sie eine reguläre Liste im Bean:

public class MyBean {
...
List myList = new ArryList();
myList.add(new MyObject("a"));
myList.add(new MyObject("b"));
myList.add(new MyObject("c"));
...

verwenden Sie dann das Sortieren wie folgt: value="#{myBean.myList}" var="myVar" sortBy="#{myVar.stringProp}"

BEARBEITEN2: Wenn die Sortierparameter Strings oder Zahlen sind, müssen Sie nichts anpassen. Wenn Sie etwas anderes sortieren, müssen Sie eine benutzerdefinierte sortFunction definieren.

Wenn Sie erweiterte Optionen wie Lazy Loading verwenden (das übrigens in pf 3.2 kaputt ist - Sie können jetzt auf 3.3 aktualisieren - es wurde am 29.5 veröffentlicht und behauptet, dieses Problem gelöst zu haben), müssen Sie ein benutzerdefiniertes Modell definieren, das sich um Filterung und Sortierung selbst kümmert.

Wenn Sie Ihre Daten nach dem Inhalt eines Arrays sortieren möchten, müssten Sie das Attribut sortFunction="#{myBean.sortData()}" definieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X