[PrimeFaces] erreur Datatable imbriquées avec rowSelection : DataModel must implement org.primefaces.model.Se
Bonjour,
J'ai 2 dataTable d'imbriqués dont la 2nd avec un RowSelection multiple. mais j'ai l'erreur suivante :
Code:
1 2 3 4 5 6 7 8 9 10
| 13:52:01,662 SEVERE [fr.convergence.util.CustomExceptionHandler] (default task-34) Erreur non gérée par l'application détectée: javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled.
at org.primefaces.component.datatable.DataTable.getRowKeyFromModel(DataTable.java:1068) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:884) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:830) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:777) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:740) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:264) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:226) [primefaces-5.1.jar:5.1]
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:85) [primefaces-5.1.jar:5.1]
...... |
mon xHtml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<h:form id="formulaireGroupe">
<p:dataTable id="Groupe" var="groupe" widgetVar="GroupeTable"
value="#{groupeBacking.listeGroupe}"
emptyMessage="Aucun groupe ne correspond aux critères"
editable="true"
styleClass="convergenceTable" editMode="cell">
<p:column headerText="Actions">
<p:commandButton
action="#{groupeControleur.dupliquerGroupeAction}"
id="iconeDuplicationGroupe" icon="ui-icon-disk"
title="Dupliquer la ligne" process="@this"
update=":formulaireGroupe">
<f:setPropertyActionListener value="#{groupe}"
target="#{groupeBacking.groupeSelectionnee}" />
</p:commandButton>
<p:commandButton
action="#{groupeControleur.supprimerGroupeAction}"
rendered="#{groupe.groupeNonUtilisee and !groupe.indicNational}"
id="iconeSuppressionGroupe" icon="ui-icon-disk"
title="Supprimer la ligne" process="@this"
update=":formulaireGroupe">
<f:setPropertyActionListener value="#{groupe}"
target="#{groupeBacking.groupeSelectionnee}" />
</p:commandButton>
<p:rowToggler />
</p:column>
<p:rowExpansion>
<p:dataTable var="ligne" id="listeDeResultatLignes"
value="#{groupe.listeProduitLigne}" rowKey="#{ligne.idView}"
styleClass="convergenceTable" paginator="true" rows="30"
rowsPerPageTemplate="10,30,60" paginatorAlwaysVisible="false"
border="1" draggableRows="true" selection="#{groupe.selectionLignes}"
emptyMessage="Aucune ligne enregistrée"
rendered="#{!ligneProduitControleur.filtrerLigneDeProduit(ligne)}">
<p:ajax event="rowReorder"
listener="#{ligneProduitControleur.onRowReorder}"
update=":formulaireGroupe :msgDetailProduit" />
<p:column selectionMode="multiple"
style="width:16px;text-align:center" />
<p:column headerText="Nature">
<h:outputText value="#{ligne.natureLigne.libelle}" />
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable> |
et mon bean (en partie)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
protected List<ProduitLigneDto> selectionLignes;
/**
* Méthode Get de la variable selectionLignes.
* @return List<ProduitLigneDto>
*/
public List<ProduitLigneDto> getSelectionLignes() {
return selectionLignes;
}
/**
* Méthode Set de la variable selectionLignes.
* @param selectionLignes
*/
public void setSelectionLignes(List<ProduitLigneDto> selectionLignes) {
this.selectionLignes = selectionLignes;
} |
D'ou provient mon erreur? lorsque j'enlève le rowSelection, mes tables fonctionnes parfaitement. PrimeFaces se prend t'il les pieds dans le tapis et ne sais pas identifier sur quel table il faut effectuer le rowSelection? Comment palier à cette erreur?
Merci pour vos réponse.