2017-08-16 20 views
1

私は、動的列を持つdataTableを持っています。Primefacesデータテーブルをフィルタリングできません

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

豆:

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()はすべての学生をロード

だから私はここでprimefaces 5.3とJSF 2.2

を使用するコードです。

例外:

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)[...] 

何かがここで間違っています?

+0

はこれを試してみてください。 jsfのゲッターは、ページを1回だけ表示するために100回呼び出すことができます。だからゲッターでDBを決して呼び出すことはできません。 –

+1

これを試してください:https://stackoverflow.com/questions/5765853/how-and-when-should-i-load-the-model-from-database-for-hdatatable –

+0

私はそれをPostConstructにロードしましたが、動作しません。 – Spoonatte

答えて

0

私は確信していますが、あなたはリストをinicializeしようとしましたか?私はそれが問題だと思う、あるいは少なくとも、それが解決しなければならない

private List<Etudiant> filteredEtudiants = new ArrayList<>(); 
関連する問題