2016-07-11 21 views
0

Ich habe eine Datentabelle mit dynamischen Spalten, definiert durch ein columnModel. Die Eigenschaft String verweist auf das richtige Feld (für die Ausgabe von Werten). Die Art String entspricht die Eigenschaft, aber einige Spalten sollen nicht sortierbar sein, ist eine Art null oder leer (versucht, beide) dort:Primefaces dynamische Spalten p: Spalten sortieren spezifische Spalten

public class ColumnModel { 
    private String property; 
    private String sort; 
    private int width; 

    //GETTER 
    ... 
} 

ich eine Liste jener Modelle verwenden, um meine dynamischen Spalten zu erstellen. Die Verwendung der Breite gut funktioniert:

<p:dataTable value="#{bean.items}" var="item" ... > 

    <p:columns value="#{bean.columnModel}" var="column" sortBy="#{column.sort}" width="#{column.width}"> 
     ... 
    </p:columns> 
</p:dataTable> 

Meine Frage: sortBy nicht null oder einen emtpy Wert zulässt. Ansonsten bekomme ich eine parse-Ausnahme, wo es heißt, es kann # {item.} Nicht parsen. primefaces scheint 'item' (my var der Datentabelle) automatisch vor dem angegebenen sortfield hinzuzufügen.

Wie können einige Spalten ignoriert werden?

Vielen Dank für Ihre Antworten!

Mit primefaces 5.0.9 mit Wildfly 9.0.2

+0

eine neuere Version PF versucht das? Und "Ich kann keine neuere Version verwenden" ist keine korrekte Antwort ;-). Der Versuch, zu sehen, ob es in einer neueren Version gelöst ist, ist in einem einfachen Testprojekt ([mcve]) immer möglich. – Kukeltje

+0

thx für Ihre Antwort, in der Hauptoberfläche 5.2 gibt es ein neues Attribut für genau dieses Problem. – kaiser

+0

Gern geschehen. Sie können selbst eine Antwort erstellen. Bitte tun Sie, wie es für andere hilfreich sein könnte – Kukeltje

Antwort

1

Primefaces hat neue Attribute für p:column(s) in Version 5.1.3 und 5.2.0:

  • sortierbar
  • filterbar

Hier ist der Link zum gelösten Problem:

https://code.google.com/archive/p/primefaces/issues/5021

Beispiel abhängig von meinem Code oben:

public class ColumnModel { 
    private String property; 
    private boolean sortable; 
    private int width; 

    //GETTER 
    ... 
} 

Mit einem List<ColumnModel> columnModel in Bohne gegeben:

<p:dataTable value="#{bean.items}" var="item" ... > 

    <p:columns value="#{bean.columnModel}" var="column" sortBy="#{item[column.property]}" field="#{column.property}" sortable="#{column.sortable}" width="#{column.width}"> 
     ... 
    </p:columns> 
</p:dataTable> 
+0

Ich habe meine Antwort bearbeitet – kaiser