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.

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>
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
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;
}
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
 
 
<h:dataTable value="#{beanDetailCommande.details}" var="detailscommande">
.
.
.
</h:dataTable>
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.
Merci.