Bonjour,
J'essaye d'afficher un tableau (tag dataTable) où chaque ligne correspond à un enregistrement. Chaque ligne devrait comporter un bouton permettant de consulter le détail d'un enregistrement. Et c'est là que ça coince.
J'utilise <h:commandButton /> pour créer ce bouton. Le paramêtre value me permet d'aller vers la page de détails. Il faut également transmettre à l'application le numéro de la ligne. Pour celà, le paramêtre actionListener permet d'appeler une méthode selectEnregistrement(ActionEvent). Dans celle-ci, je vérifie l'id du bouton ayant déclenché l'action, ce qui permettrait de savoir quelle ligne a été cliquée. Plus qu'à s'assurer que l'id du bouton indique la ligne en utilisant son paramêtre id.
Voici le code :
Tout à donc l'air d'aller bien, sauf que j'obtiens ceci:
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 <h:dataTable value="#{form.listeEnregistrements}" var="enregistrement" border="1"> <h:column> <h:outputText value="#{enregistrement.id}" /> </h:column> <%-- diverses colonnes supprimées ici --%> <h:column> <h:commandButton id="#{enregistrement.id}" value="Editer" actionListener="#{form.selectEnregistrement}" action="editEnregistrement" immediate="true" /> </h:column> </h:dataTable>
Pas vraiment ce que je voulais.
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 Etat HTTP 500 - type Rapport d'exception message description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête. exception javax.servlet.ServletException: Exception in JSP: /usersList.jsp:43 40: <f:facet name="header"> 41: <h:outputText value="#{text.usersList_actions}" /> 42: </f:facet> 43: <h:commandButton 44: id="#{enregistrement.id}" 45: value="Editer" 46: actionListener="#{form.selectEnregistrement}"
En remplaçant le paramêtre id (id="#{enregistrement.id}") par une valeur fixe, la page s'affiche correctement, mais bien sûr je perds alors la possibilité pour selectEnregistrement d'identifier la ligne choisie.
fonctionne normalement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <h:outputText value="#{enregistrement.id}" />
Remplacer #{enregistrement.id} par #{enregistrement.getId} ne fonctionne pas.
Est-il impossible de calculer l'id d'un composant dynamiquement? Connaissez vous un autre moyen d'accéder au détail d'une ligne d'un tableau dataTable?
Merci d'avance.
Partager