JSF:PB DataTable et requete sql
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:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<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:
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
|
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:
1 2 3 4 5 6
|
<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.