Bonjour,
Dans le cadre d'une application de gestion, j'ai une dataTable dans laquelle je charge la liste des commandes à partir d'une liste.
Dans cette DataTable j'integre un bouton pour visualiser les details de la commande de la ligne correspondante dans une fenetre popup.
l'action correspondant au click du bouton declenche une methode getDetails() qui rend une liste des lignes(detail) de la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <h:dataTable value="{beanDetailCommande.dataModel}" var="commande"> . . . <h:column> <f:facet name="header"> <h:outputText value="Details"/> </f:facet> <h:commandButton value="Voir Details" action="beanDetailCommande.getDetails}"></h:commandButton> </h:column> </h:dataTable>
Dans la page jsp qui visualise le detail de la commande j'ai une dataTable
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 public List getDetails() if (details==null) details=new ArrayList(); try { Commande commande= (Commande) dataModel.getRowData(); Class.forName("org.postgresql.Driver"); Connection conX = DriverManager.getConnection("jdbc:postgresql://localhost:5432/gestion","postgres","postgres"); PreparedStatement ps=conX.prepareStatement("select * from \"gestion\".\"detailscommande\" where commande_id=?"); ps.setInt(1,commande.getCommande_id()); ResultSet rs=ps.executeQuery(); while (rs.next()) { Detailscommande dc=new Detailscommande(rs.getInt(1),rs.getString(8),rs.getString(9),rs.getDate(2),rs.getString(3),rs.getString(4),0,new Integer(rs.getInt(5)),rs.getString(7),rs.getInt(6),""); details.add(dc); } conX.close(); } catch(SQLException sle) { return null; } catch(ClassNotFoundException cnfe) { return null; } return details; }
Le probleme c que la requete sql ne marche pas(NullPointerException rendu) sauf si je remplace le deuxieme argument de l'instruction ps.setInt(1,commande.getCommande_id()); par une constante par exemple ps.setInt(1,1) ça me donne le detail de la commande avec le id=1 sur toutes les lignes de ma datatable et ainsi de suite pour les autres id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <h:dataTable value="#{beanDetailCommande.details}" var="detailscommande"> . . . </h:dataTable>
Merci.
Partager