Bonjour,
J'ai 2 dataTable d'imbriqués dont la 2nd avec un RowSelection multiple. mais j'ai l'erreur suivante :
mon xHtml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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] ......
et mon bean (en partie)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Merci pour vos réponse.
Partager