2017-08-16 1 views
1

Ich habe eine DataTable mit dynamischen Spalten.Kann die Dateitabelle von Primefaces nicht filtern

So verwende ich primefaces 5.3 und JSF 2.2

Hier Code:

<h:form id="form1"> 
    <p:dataTable var="etudiant" widgetVar="etdTable" paginator="true" rows="10" 
    rowsPerPageTemplate="5,10,15" value="#{etudiantController.etudiants}" 
    lazy="false" emptyMessage="Aucune etudiant trouvé" 
    filteredValue="#{etudiantController.filteredEtudiants}"> 

     <p:column filterBy="#{etudiant.nomEtudiant}" filterMatchMode="exact"> 
      <f:facet name="header"> 
       <h:outputText value="Nom" /> 
      </f:facet> 
      <h:outputText value="#{etudiant.nomEtudiant}" /> 
     </p:column> 
     [...] 

Bean:

private List<Etudiant> etudiants; 
private List<Etudiant> filteredEtudiants; 

public List<Etudiant> getEtudiants() { 
    return etudiantService.getAllEtudiants(); 
} 

public List<Etudiant> getFilteredEtudiants() { 
    return this.filteredEtudiants; 
} 

public void setFilteredEtudiants(List<Etudiant> filteredEtudiants) { 
    this.filteredEtudiants = filteredEtudiants; 
} 

getAllEtudiants (Last) alle Schüler.

Ausnahme:

java.lang.NullPointerException 
at org.primefaces.component.datatable.feature.FilterFeature.filter(FilterFeature.java:150) 
at org.primefaces.component.datatable.feature.FilterFeature.encode(FilterFeature.java:117) 
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:78) 
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:924) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863) [...] 
java.lang.IllegalStateException: CDATA tags may not nest 
at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.startCDATA(HtmlResponseWriter.java:681) at javax.faces.context.ResponseWriterWrapper.startCDATA(ResponseWriterWrapper.java:179)[...] 

etwas ist hier falsch ??

+0

Ich denke, dass das Problem ist, oder zumindest muss es gelöst werden. Ein Getter in JSF kann 100 Mal aufgerufen werden, nur um die Seite einmal anzuzeigen. Sie können also die db niemals in einem Getter aufrufen. –

+1

Versuchen Sie Folgendes: https://stackoverflow.com/questions/5765853/how-and-when-should-i-load-the-model-from-database-for-hdatatable –

+0

Ich lud es auf PostConstruct, aber stil funktioniert nicht. – Spoonatte

Antwort

0

Ich bin mir sicher, aber haben Sie versucht, die Liste zu inizialisieren?

versuchen Sie dies:

private List<Etudiant> filteredEtudiants = new ArrayList<>(); 
Verwandte Themen