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 :

Problème lors de l'envoi de données entre servlet et JSP


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut Problème lors de l'envoi de données entre servlet et JSP
    Bonjour a tous et a toutes,

    Je travaille avec la technologie javaEE MVC et base de données Oracle
    J'ai créé une classe entité site. Dans un site j'ai un nom et un id.
    J'ai créé un model qui lui s'occupe des requete SQL ( INSERT, SELECT, UPDATE, DELETE)
    Puis un controler qui exécute ma requête et l'envoie à la vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayList<Site> sites = mSite.read("SELECT nomSite FROM site");
    request.setAttribute("siteData", sites);
    request.getRequestDispatcher("salle.jsp").forward(request, response);
    request.getRequestDispatcher("reservation.jsp").forward(request, response);
    et ensuite dans ma vue
    je récupère comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%
    if(request.getAttribute("siteData") instanceof ArrayList){
            ArrayList<Site> listSite = (ArrayList<Site>)request.getAttribute("siteData");
            Iterator<Site> iterator = listSite.iterator();
            for(int i=0; iterator.hasNext(); i++){
                    out.print("<option>" + iterator.next() +"</option>" );
            }
    }
    %>

    Le problème c'est que je récupère aucune donnée. Est ce quelqu'un sait pourquoi ou me mettre sur la voie.

    Merci d'avance

    JUJU

  2. #2
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    salut,

    déjà tu déclenches 2 vues et pas une :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    request.getRequestDispatcher("salle.jsp").forward(request, response);
    request.getRequestDispatcher("reservation.jsp").forward(request, response);
    comment ce fait-ce ?
    c'est soit l'une, soit l'autres ... mais pas les deux ... en tout cas, dans ton exemple.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Oui car la liste des sites j'en ai besoin dans deux vues pour compléter les listes déroulante de chacune des deux page. j'espère avoir été clair

  4. #4
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Citation Envoyé par julia_m Voir le message
    Oui car la liste des sites j'en ai besoin dans deux vues pour compléter les listes déroulante de chacune des deux page. j'espère avoir été clair
    bah oui mais non, tu as un problème de conception, car ce n'est normalement pas possible, la première vue générant le rendu, la seconde ne le peut pas : exception !

    sauf si tu fait un "include" à la place d'un "forward", éventuellement, à tester.

    ou alors tu fais une autre page JSP qui include les 2 autres, là oui ça pourrait aussi fonctionner.

    mais un forward délègue entièrement la génération de la vue à la page, et ferme le flux de sortie ... donc le second forward sera (normalement) en erreur.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Normalement t'auras une exception du genre outputstream car on pourra pas avoir 2 flux de sortie.

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Merci de vos réponses. Je vais essayer un forward avec un include.
    Mais ça explique pas pourquoi le premier forward ne fais pas son "boulot" qui est de remplir la liste qui est dans la page salle.jsp

  7. #7
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Citation Envoyé par diablerouge2000 Voir le message
    Normalement t'auras une exception du genre outputstream car on pourra pas avoir 2 flux de sortie.
    tout à fait.


    et si, ça peut totalement l'expliquer, vu que ça ne doit pas marcher en l'état de toute façon ...
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Même avec un seul forward, ça ne rempli pas :s

  9. #9
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    et tu es sûre que ton mSite.read("SELECT nomSite FROM site"); fonctionne ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Oui je suis sur.

  11. #11
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    je crois voir d'où vient le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getAttribute("siteData") instanceof ArrayList
    en effet, request.getAttribute te renverras toujours un "Object" qu'il faudra que tu castes vers un ArrayList (il faudrait mieux List d'ailleurs), donc ton if n'est pas bon, tu ne rentres jamais dedans (as-tu debugger ??).

    Il te faudrait un truc du genre ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Object liste = request.getAttribute("siteData") ;
     
    if (liste != null)
    {
      List <Site> listeSites = (List) liste;
     
      ... etc ...
    }
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Malgré ça la liste reste vide.

  13. #13
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Citation Envoyé par julia_m Voir le message
    Malgré ça la liste reste vide.
    est-ce que tu passes dans le if ? est-ce que l'object est "null" ?
    est-ce que "sites.size()" te renvoie une taille de liste correcte, juste avant "request.setAttribute("siteData", sites);"

    dernier point, tu sais qu'en HTML, une "option" doit avoir une value ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Je ne rentre pas dans le if, car Object est null.
    J'ai essayer juste de transmettre un variable de type String en dur. Dans la vue, elle est toujours null.

  15. #15
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Voici un petit exemple qui fonctionne et qui reprend exactement ta problématique :

    la servlet :

    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
    package demo;
     
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    @WebServlet(name = "MaServlet", urlPatterns = {"/MaServlet"})
    public class MaServlet extends HttpServlet {
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
     
            List <String> liste = new ArrayList <String> ();
     
            liste.add("chaine 1");
            liste.add("chaine 2");
            liste.add("chaine 3");
            liste.add("chaine 4");
     
            request.setAttribute("liste", liste);
     
            request.getRequestDispatcher("vue.jsp").forward(request, response);     
        }
    }
    et la vue (vue.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
    <%@page import="java.util.Iterator"%>
    <%@page import="java.util.List"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Vue</title>
        </head>
        <body>
            <%
                if (request.getAttribute("liste") != null) {
                    List<String> liste = (List<String>) request.getAttribute("liste");
                    Iterator<String> iterator = liste.iterator();
                    for (int i = 0; iterator.hasNext(); i++) {
                        out.print("<li>" + iterator.next() + "</li>");
                    }
                }
            %>
        </body>
    </html>
    Ca fonctionne parfaitement bien.
    Le projet est en PJ si tu veux voir.

    Je ré-itère ma question, es-tu certaine que ta méthode "mSite.read("SELECT nomSite FROM site");" ne renvoie pas "null". Quelle est la taille de la liste renvoyée juste après cette méthode ?
    Fichiers attachés Fichiers attachés
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  16. #16
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    Je pense que mon problème viens ailleurs.

    Car j'ai fais

    dans ma servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string test = "envoie de donnee"
    request.setAttribute("siteData", test);
    request.getRequestDispatcher("salle.jsp").forward(request, response);
    et dans ma vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     String attribut = (String) request.getAttribute("test");
    out.println( attribut );
    ça m'affiche rien

  17. #17
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    tu t'es trompée de nom de variable : "test" pour le getAttribute alors que tu as mis "siteData" pour le setAttribute.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  18. #18
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 130
    Points : 33
    Points
    33
    Par défaut
    C'est une erreur de copier coller je me suis pas trompé j'ai bien mis les deux même nom désolée. ça ne fonctionne pas.

  19. #19
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    tu peux montrer toute ta Servlet ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  20. #20
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Citation Envoyé par julia_m Voir le message
    Je pense que mon problème viens ailleurs.
    Ca c'est certain, car avec le petit projet Démo que je t'ai montré, ça te prouve bien que ça fonctionne correctement
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2014, 12h38
  2. Problème lors de l'envoi de données de flash à un script PHP
    Par Winchack dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 25/09/2008, 23h44
  3. Problème lors de l'envoi de données via laision RS 232
    Par Rastaforien dans le forum Langage
    Réponses: 9
    Dernier message: 26/06/2008, 12h54
  4. Problème lors de l'envoi de données via laison RS 232
    Par Rastaforien dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 23/06/2008, 17h36
  5. Réponses: 10
    Dernier message: 07/02/2007, 08h43

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