IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

jsf:Pb dataTable et requete sql


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Par défaut 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 : 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.

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    C'est que ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dataModel.getRowData();
    renvoi null. Quel est le type de dataModel?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Par défaut
    j'ai private DataModel dataModel=new ListDataModel();
    Mais je crois pas que le probleme se pose à ce niveau car si j'essaye de verifier que commande.getCommande_id() renvoie une valeur avant l'execution de la requete je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JOptionPane.showMessageDialog(null,String.valueOF(commande.getCommande_id(),"titre",JOptionPane.INFORMATIONMESSAGE);
    et en effet je vois ma valeur affichée correctement dans la boite de dialogue.

    Merci.

  4. #4
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Le NullPointerException il est sur quelle ligne?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Par défaut
    Salut,
    Le message est affiché dans la fenetre de navigation detailscommande.jsp du type:

    Error getting property 'details' from bean of type BeanDetailCommande......etc

    Merci.

  6. #6
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Si tu peux essaye de nous mettre la trace en entier.
    Le problème doit venir d'une erreur dans ta requete qui entraine une SQLException laquelle entraine un return null. Il faudrait que tu affiche le détail de cette erreur pour voir d'où vient le problème. Elle sera affichée dans la console de ton serveur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    } catch(SQLException sle) {
    sle.printStackTrace();
                return null;
            }

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Par défaut
    Salut,
    j'ai resolu partiellement le probleme, il fallait faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //charger la liste de touites les commandes presentes.
    datamodel.setWrappedData(getListecommande());
    Commande commande= (Commande) dataModel.getRowData();
    .
    .
    .
    Avant, cette instruction etait dans la methode getDataModel()
    Maintenant le pb c'est en cliquant sur le bouton details il me renvoie le detail du premier element de la liste listecommande seulement quelque soit la ligne selectionnée.

  8. #8
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Par défaut
    Que contient la méthode Detailscommande?
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2013, 20h05
  2. JSF:PB DataTable et requete sql
    Par kam81 dans le forum JSF
    Réponses: 0
    Dernier message: 02/11/2008, 11h15
  3. Réponses: 3
    Dernier message: 10/09/2007, 20h31
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo