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

Servlets/JSP Java Discussion :

Sélection de données en JPQL puis affichage


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut Sélection de données en JPQL puis affichage
    Bonjours je n'arrive pas a comprendre comment je pourrais afficher ma requête jpql dans ma jsp.
    le code de ma jsp:
    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
       List<Personne> listePersonnes = (List<Personne>) request.getAttribute("listePersonnes");
     
                            for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
     
                                    for (Adresse a : p.getAdresse()) {
                                        out.println("<td>" + a.getRue() + "</td>");
                                        out.println("<td>" + a.getVille() + "</td>");
                                        out.println("<td>" + a.getCodepostal() + "</td>");
     
                                    }
     
     
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
                            }
    le probleme est au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for (Adresse a : p.getAdresse()) {
                                        out.println("<td>" + a.getRue() + "</td>");
                                        out.println("<td>" + a.getVille() + "</td>");
                                        out.println("<td>" + a.getCodepostal() + "</td>");
     
                                    }
    for-each not applicable to expression type
    required: array or java.lang.Iterable
    found: com.projet.classes.personnes.Adresse


    et voici ma requête que je lui envoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Query query = em.createQuery("SELECT p FROM Personne p LEFT JOIN p.adresse a");
                        List<Personne> listePersonnes = query.getResultList();
     
                        request.setAttribute("listePersonnes", listePersonnes);
     
                        getServletContext().getRequestDispatcher("/Afficher/afficherPersonnes.jsp").forward(request, response);
    merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Hibernate n'a rien à voir ton problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for-each not applicable to expression type
    required: array or java.lang.Iterable
    found: com.projet.classes.personnes.Adresse
    Tu essaie de boucler sur la valeur de retour de personne.getAdresse, mais personne.getAdresse te retourne un type Adresse et non pas un List<Adresse> ou un Adresse[] ou toute autre forme de Collection<Adresse>

    Bref, ce n'est pas une collection, donc tu ne peux pas itérer dessus. Ce qui est assez logique, on vois mal une personne avoir plusieurs adresses

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    merci de ta réponse j'avais un peu compris a ce niveau là mais y a t-il une solution pour afficher ma requete jpql

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Pour enlever mon erreur je lui est mis cela
    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
    for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    Adresse a = p.getAdresse();
                                   out.println("<td>" + a.getRue()+ "</td>");
                                   out.println("<td>" + a.getVille()+ "</td>");
                                   out.println("<td>" + a.getCodepostal()+ "</td>");
     
     
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
     
                            }
    mais maintenant il me mais une erreur java.lang.NullPointerException

    Enfaite la vrai question est comment faire pour récupérer une liste contenant la personne avec son sachant que j'ai une coposition entre personne et adresse soit dans ma table personne une colone idAdresse qui me renvoie sur l'adresse" de la personne

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par Christophe39 Voir le message

    mais maintenant il me mais une erreur java.lang.NullPointerException
    Je suppsoe que la personne en question n'a pas d'adresse


    Citation Envoyé par Christophe39 Voir le message
    Enfaite la vrai question est comment faire pour récupérer une liste contenant la personne avec son sachant que j'ai une coposition entre personne et adresse soit dans ma table personne une colone idAdresse qui me renvoie sur l'adresse" de la personne
    Tu n'a rien de particulier à faire, ton entitymanage rfait déjà ce boulot (pour autant que tu a réalisé correctement ton mapping, bien sur).

    Il te suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Personne> listePersonnes = em.createQuery("from Personne").getResultList();
    Et tu pourra accéder à tout ce qui concerne la personnes.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    merci de ta réponse mais apres pour mon affichage comment y afficher sachant que j'aimerais avoir dans mon tableau toutes les adresse soit getVille() getRue() getCodepostale() ainsi que tout les getter lié au attribut de la class personne soit en gros comme ceci ( c'est une image le code ne marche pas)
    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
    for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    out.println("<td>" + p.getVille()+ "</td>");
                                    out.println("<td>" + p.getRue()+ "</td>");
                                    out.println("<td>" + p.getVille()+ "</td>");
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
     
                            }

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Je ne comprends pas ta dernière question . Si tu veux afficher l'adresse, tu fais getAdresse, puis dedans getVille, getcodePostal, etc, comme tu l'a déjà fait. Tu dois juste gérer le cas où la personne n'a pas d'adresse encodée, pour éviter le nullpointerexception...

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    bon j'ai enfin réussit a récupérer mes infos en fesant cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      List<Personne> listePersonnes = em.createQuery("SELECT p FROM Personne p").getResultList();
                        request.setAttribute("listePersonnes", listePersonnes);
                        getServletContext().getRequestDispatcher("/Afficher/afficherPersonnes.jsp").forward(request, response);
    puis mon affichage comme cela
    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
     for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    Adresse a = p.getAdresse();
                                    out.println("<td>" + a.getVille() + "</td>");
                                    out.println("<td>" + a.getRue() + "</td>");
                                    out.println("<td>" + a.getCodepostal()+ "</td>");
     
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
     
     
     
     
                            }
    mon nouveau probleme maintenant c'est que je n'arrive pas a récupérer les atribut propre a ma class Etudiant sachant quelle hérite de personne

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Etudiant etudiant = (Etudiant)p;

    J'ai l'impression qu'il te manque de grosses bases en java avant d'attaquer le J2EE

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Merci je test

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Merci sa marche c'est cool.
    J'ai une autre petite question pouvez vous me dire si il y a une faute dans cette page car il me dit The server encountered an internal error that prevented it from fulfilling this request. et puis je ne vois absolument quel erreur de langage j'aurais pus faire.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
    <%@page import="com.projet.classes.personnes.Enseignant"%>
    <%@page import="com.projet.classes.personnes.Adresse"%>
    <%@page import="com.projet.classes.personnes.Administrateur"%>
    <%@page import="com.projet.classes.personnes.Etudiant"%>
    <%@page import="com.projet.classes.personnes.Personne"%>
    <%@page import="java.util.List"%>
    <%@page import="javax.persistence.Query"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h1>Afficher</h1>
            <fieldset>
                <legend>Etudiant(es)</legend>
                <table border="1">
                    <thead>
                        <tr>
                            <th>Nom</th>
                            <th>Prénom</th>
                            <th>E-mail</th>
                            <th>Identifiant</th>
                            <th>Mot de passe</th>
                            <th>Ville</th>
                            <th>Rue</th>
                            <th>Code postale</th>
                            <th>Photo</th>
                            <th>Supprimer</th>
     
                        </tr>
                    </thead>
                    <tbody>
                        <%
                            List<Personne> listePersonnes = (List<Personne>) request.getAttribute("listePersonnes");
                            for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    Adresse a = p.getAdresse();
                                    out.println("<td>" + a.getVille() + "</td>");
                                    out.println("<td>" + a.getRue() + "</td>");
                                    out.println("<td>" + a.getCodepostal() + "</td>");
                                    Etudiant e = (Etudiant) p;
                                    out.println("<td>" + e.getPhoto() + "</td>");
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
     
                            }
     
                        %>
                    </tbody>
     
                </table>
            </fieldset>
            <fieldset>
                <legend>Enseignant(es)</legend>
                <table border="1">
                    <thead>
                        <tr>
                            <th>Nom</th>
                            <th>Prénom</th>
                            <th>E-mail</th>
                            <th>Identifiant</th>
                            <th>Mot de passe</th>
                            <th>Ville</th>
                            <th>Rue</th>
                            <th>Code postale</th>
                            <th>Supprimer</th>
     
                        </tr>
                    </thead>
                    <tbody>
                        <%
                            for (Personne p : listePersonnes) {
                                if (p instanceof Enseignant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    Adresse a = p.getAdresse();
                                    out.println("<td>" + a.getVille() + "</td>");
                                    out.println("<td>" + a.getRue() + "</td>");
                                    out.println("<td>" + a.getCodepostal() + "</td>");
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
                            }
     
                        %>
                    </tbody>
     
                </table>
            </fieldset>
            <fieldset>
                <legend>Administrateur</legend>
                <table border="1">
                    <thead>
                        <tr>
                            <th>Nom</th>
                            <th>Prénom</th>
                            <th>E-mail</th>
                            <th>Identifiant</th>
                            <th>Mot de passe</th>
                            <th>Ville</th>
                            <th>Rue</th>
                            <th>Code postale</th>
                            <th>Supprimer</th>
     
                        </tr>
                    </thead>
                    <tbody>
                        <%
                            for (Personne p : listePersonnes) {
                                if (p instanceof Administrateur) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    Adresse a = p.getAdresse();
                                    out.println("<td>" + a.getVille() + "</td>");
                                    out.println("<td>" + a.getRue() + "</td>");
                                    out.println("<td>" + a.getCodepostal() + "</td>");
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
                            }
                        %>
                    </tbody>
     
                </table>
            </fieldset>
        </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Liste déroulante - Sélection puis affichage d'une autre donnée
    Par matbiz dans le forum Excel
    Réponses: 5
    Dernier message: 11/11/2011, 12h33
  2. Réponses: 0
    Dernier message: 29/06/2011, 14h04
  3. Sélection liste déroulante puis affichage de text box
    Par dolu007 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/11/2006, 00h03
  4. Batch d'extraction avec sélection des données ?
    Par beastman007 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/05/2006, 11h02
  5. Sélection des données d'un champ avec le focus de la souris
    Par Nerva dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 13/12/2005, 15h23

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