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 :

Transporter un objet d'un page Jsp à ma Servlet ?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 134
    Par défaut Transporter un objet d'un page Jsp à ma Servlet ?
    Bonjours à tous,

    Je dois offrir à mes utilisateurs une bouton de mise à jour, page JSP.
    Lors du clic je veux transporter mon objet complet et le récupere sur ma servlet.

    J'ai eu deux idée:
    1- Utiliser des champs hidden ?! "Je n'ai pas bien tester..."

    2- Utilisé une session

    Concernant la deuxième solution j'ai un problème lorsque je récupère.
    Dans un premier temps ça fonctionne bien mais après 2 ou 3 test ça fonctionne plus ?!!!

    Voici un fragment de code de la JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    out.print("" +
                                "<td valign='top' width='100'>"+
                                    "<form name='update' action='ServletClientDao?event=update' method='POST'>"+
                                        "<input type='hidden' name='idconcours' value='"+concour.getId_concour()+"'/>"+
                                        "<input type='hidden' name='concours' value='"+concour+"'>" +
                                        "<input type='hidden' name='page' id='page' value='fini'>");
                                        session.setAttribute("concour", concour);
    ...
    Voici l'utilisation dans 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
    ...else if(request.getParameter("event").equals("update")){
                System.out.println("Update");
                Concour concour=null;
                try {
                    concour=(Concour)session.getAttribute("concour");
                } catch (Exception e) {
                    System.out.println("Execption lancé dans Servlet lors de lappel de update ");
                    e.printStackTrace();
                }
                System.out.println("J'ai mon concours et le titre est "+concour.getTitre()+""+concour.getId_concour());
                String page = request.getParameter("page");
                RequestDispatcher req = request.getRequestDispatcher("/" + page + ".jsp");
                req.forward(request, response);
            }...
    Quelqu'un pourrait me dire pourquoi ma session ne vas pas ?
    Auriez vous une meilleur solution ?

    Entre temps je vais utiliser le champs hidden et reconstruire mon objet dans ma servlet.

    Merci à tous

  2. #2
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Ce qu'il faut savoir, c'est que lorsque ta jsp a été traitée par le conteneur celle ci s'apparente à du code HTML. Ce qui veut dire que tu ne peux plus effectuer des traitements à partir du langage Java.

    La solution que tu as mise en oeuvre à partir de champ hidden est la seule solution viable entre les deux solutions que tu proposes.

    En espérant que ça t'aidera,

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 134
    Par défaut
    Merci,

    Cela dit j'ai essayé avec session et ça a fonctionné ?
    Seul bémol c'est que ça fonctionne pas très bien après quelque clic c'est fini ?!

    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
     
    ...else if(request.getParameter("event").equals("update")){
                System.out.println("Update");
                Concour concour=null;
                try {
                    concour=(Concour)session.getAttribute("concour");
                } catch (Exception e) {
                    System.out.println("Execption lancé dans Servlet lors de lappel de update ");
                    e.printStackTrace();
                }
                System.out.println("J'ai mon concours et le titre est "+concour.getTitre()+""+concour.getId_concour());
                String page = request.getParameter("page");
                RequestDispatcher req = request.getRequestDispatcher("/" + page + ".jsp");
                req.forward(request, response);
            }...
    Ps: j'ai utilisé des champs "hidden" et ça vas pour le moment cela dit je préfère stocker mon objet dans la session directement afin de l'utiliser ?!

    Merci

  4. #4
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Salut,
    stocker mon objet dans la session directement afin de l'utiliser ?!
    La portée session est intéressante si tu dois conserver pendant la navigation de l'utilisateur cette information.
    Si ce n'est pas le cas autant utiliser un scope request.(implicit objet accessible dans la jsp
    Dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("concour", concour);
    code servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     try {
                    concour=(Concour) request.getAttribute("concour");
    Il serait interessant que tu nous montre l'instanciation de l'objet concour, (est-ce un useBean?), pour ce qui est de la session faut peut-être que tu regardes web.xml et le parametrage du <session-timeout>

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 134
    Par défaut
    Bonjours,

    Petite explication de mon idée, j'ai une page JSP avec un formulaire pour inserer des concours, j'ai une autre page qui affiche tout les concours fini, pour chaque concours il y a un bouton modifier.

    Je voudrais donc que lorsque je clic sur ce bouton il récupere le concours concerner et l'envoie à la servlet pour à son tour l'envoie à ma page d'insertion de concours en remplissant les champs directement et afficher un nouveaux bouton pour modifier et non ajouter un nouveaux concours !

    Comment feriez vous la chose ?

    1-Request
    J'ai utilisé request.....

    Mais ma valeur dans la servlet est null ?

    JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    print(concour.getTitre());// Ok Avant cela affiche bien le titre!
    request.setAttribute("concour",(Concour)concour);
    print(concour.getTitre());// Ok Apres cela affiche bien le titre!
    Servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    concour=(Concour)request.getAttribute("concour");
                    System.out.println("Apres "+concour); // Apres null
    2-Session

    Concernant les sessions j'avais déjà visité web.xml afin de voir s'il y avait un timer, c'est par défaut 30 j'ai changé une ou deux fois pour vérifier mais aucun résultat favorable ?!

    3-Beans

    Concernant les Beans !!
    Ça c'est une toute autre histoire !

    J'ai commencé mon projet en utilisant des beans mais maintenant plus je fais la chose à la sauvage et donc pas propre du tout

    Autrement dit ma JSP à un formulaire qui envoie à ma servlet, normalement ma servlet devrait crée un bean c'est bine ça ?

    Ps: Je serais pas quoi dire sur les Beans car j'ai pas bien compris le principe !

    Merci à tous

  6. #6
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Bonsoir,

    J'imagine que la liste des concours provient d'un ResultSet, et que tu as placés les enregistrements issus de ce ResultSet dans une collection type HashMap (clé titreConcour / valeur objConcour), et que cette HashMap est de portée session.
    Code ServletRecupConcours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //statement et boucle 
     
    hmConcours.put(concour.getTitre, concour);
    }
    session.setAttribute("listeConcours", hmConcours);
    //dispatcher
    J'imagine que l'affichage, de la liste des concours repose sur l'iteration de la HashMap et que l'action sur le bouton appelle une fonction javascript qui récupère nomConcour et le place dans un hidden (concourUp)avant de poster le formulaire.

    pageJsp qui affiche la liste des concours fini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <input type='hidden' name='concourUp'>
    <c:forEach var='lstConcours' items='${listeConcours}'>
    <tr>
        <td>'${lstConcours.key}'</td>
        <td><input type='button' name='${lstConcours.key}' onClick='submitFrm(this.name)'</td>
    </tr>
    </c:forEach>
    dans ta servlet qui gére controle et gére la redirection vers la page de mise à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String titreConcour = request.getParameter("concourUp");
    HashMap hm = (HashMap) session.getAttribute("listeConcours");
    Concour leConcour = (Concour) hm.get(titreConcour);
    request.setAttribute("concourSel" leConcour);
    //rediriger vers la page d'insertion.
    Dans cette page faudra que tu vérifies en quel mode tu es
    Quelques bribes en espérant que cela puisse t'aider

Discussions similaires

  1. Erreur du création d'un objet dans une page JSP
    Par hela.sfar dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/08/2012, 16h56
  2. Réponses: 6
    Dernier message: 22/02/2010, 14h05
  3. Sérialiser un objet dans une page JSP
    Par techz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/08/2009, 20h11
  4. passer un objet ResultSet à une page JSP
    Par SOA_j2EE dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/06/2009, 21h01
  5. [javaBean + JSP] comment partager un objet entre les page JSP
    Par subzero82 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 31/05/2006, 18h48

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