2017-08-16 62 views
1

我有一個dataTable動態列。無法過濾Primefaces數據表

於是我就用primefaces 5.3和JSF 2.2

這裏是代碼:

<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()加載所有的學生。

例外:

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中的getter可以被調用100次,只顯示一次頁面。所以你不能在getter中調用db。 –

+1

試試這個:https://stackoverflow.com/questions/5765853/how-and-when-should-i-load-the-model-from-database-for-hdatatable –

+0

我在PostConstruct上加載它,但仍然無法工作。 – Spoonatte

回答

0

我很確定,但是您是否嘗試瞭解名單?

試試這個:

private List<Etudiant> filteredEtudiants = new ArrayList<>(); 
相關問題