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 :

Caster un objet récupéré via request.getParameter


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Par défaut Caster un objet récupéré via request.getParameter
    bonjour à tous !

    j'ai besoin d'un coup de pouce sur le problème suivant :

    Dans une jsp, grâce à un input hidden ayant pour valeur "mon Objet de type BRun" j'envoie vers ma Servlet et recupère cet objet avec request.getParameter("mon Objet de type BRun")

    dans la jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="runSelected" value="${run}"/>
    et dans la servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println("request.getParameter(runSelected) : "+request.getParameter("runSelected"));
    // verif : c'est ok je le recupère bien
    Le problème est qu'ensuite je ne parvient pas à caster dans ma servlet en mon objet BRun, ce que j'ai récupéré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BRun runToDetail = (BRun)request.getSession().getAttribute("runSelected");
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BRun runToDetail = (BRun)request.getAttribute("runSelected");
    me donnent un résultat null...

    J'ai du mal à comprendre ce qui ne va pas dans cette récupération de l'objet BRun.
    Le but est que je puisse récupérer certains attributs de cet objet...

    Merci pour votre aide

  2. #2
    Membre Expert
    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
    Par défaut
    Au début tu récupères la valeur issue de la requête HTTP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getParameter("runSelected")
    ce qui parait être bien ...

    mais ensuite, c'est là ton erreur, tu vas chercher cette valeur dans la session (ce qui n'est pas du tout pareil) ... et c'est normal que tu obtiennes "null".

    tu devrais écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BRun runToDetail = (BRun)request.getParameter("runSelected");

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Par défaut
    Merci pour ta réponse fxrobin.

    J'ai déjà essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BRun runToDetail = (BRun)request.getParameter("runSelected");
    mais j'ai alors une erreur "Cannot cast from String to BRun".

    J'ai l'impression que le problème vient peut-être du code côté jsp.

    Dans ma jsp j'ai en fait :
    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
     
    <c:forEach var="run" items="${sessionScope['listRunHome']}">
     
    <tr>				
    <td id="idTableDetailBody"><c:out value="${run.clientName}"/></td>
    <td id="idTableDetailBody"><c:out value="${run.matgsoc}"/></td>
    <td id="idTableDetailBody"><c:out value="${run.codbase}"/></td>
     
    <!-- pour afficher la partie details du run : (quand cliq sur "voir details") -->
    <td id="idTableDetailBody">			
    <input type="hidden" name="runSelected" value="${run}"/>
    <input type="submit" name="runSelected" style="background:transparent; border:none;cursor:pointer;"
    value='<fmt:message key="viewDetail"/>'></td>
    </tr>
     
    </c:forEach>
    En gros, je souhaite recuperer coté servlet, l'objet run detaillé dans une ligne du tableau de ma jsp, si je clique sur "voir détails".

    Je tourne autour depuis hier, et je ne vois pas la soluce.

  4. #4
    Membre Expert
    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
    Par défaut
    et ça , ça renvoit quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("request.getParameter(runSelected) : "+request.getParameter("runSelected"));
    Ta page JSP devrait "poser" l'objet en session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <% session.setAttribute(runToDetail.toString(), runToDetail); %>

    puis dans ta servlet tu peux le récupérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String runSelected = request.getParameter("runSelected");
    BRun runToDetail = (BRun) request.getSession().getAttribute(runSelected);
    request.getSession().remove(runSelected);
    La "session" est ton seul moyen de stockage d'objets entre ta page et ta servlet.

    note : ne pas oublier de retirer l'objet de la session après sa récupération, sinon ta session va grossir pour chaque instance de BRun.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Par défaut
    Merci pour ton aide fxrobin.

    cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("request.getParameter(runSelected) : "+request.getParameter("runSelected"));
    me renvoie le toString de mon objet, par exemple :
    request.getParameter(runSelected) : Run : créé le : 2010/11/30
    matsoc : 0
    J'ai bien compris que je récupère qquelque chose de type string, et qu'il n'est pas possible de le parser en mon Objet BRun.
    Du coup j'ai tenté ton bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% session.setAttribute(runToDetail.toString(), runToDetail); %>
    de même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% session.setAttribute("runSelected", runSelected); %>
    mais ça ne fonctionne pas, j'ai des erreurs sur ces lignes :
    - "runSelected" cannot be resolved
    - runselected cannot be resolved to a variable

    J'ai également essayer avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% session.setAttribute("runSelected", run); %>
    car c'est ${run} l'objet que je souhaite récupérer dans ma session, mais là aussi ça ne fonctionne pas.

    Comment puis-je dans ma jsp, attribuer à ma session cet objet ${run} (et qui est un element d'une arraylist), avec du code java voire mieux avec une balise jstl ?

    Aurais-tu une idée ?

    Bonne journée

  6. #6
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Les champs d'un formulaire ne contiennent que du texte, c'est pour ça que request.getParameter retourne toujours une String. Si tu as un objet à conserver entre les requetes, il faut le stocker dans la session.

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

Discussions similaires

  1. Valeur null récupéré par request.getParameter
    Par maghraoui dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/07/2009, 16h16
  2. [jsp] request.getParameter(path d'un fichier)
    Par Stessy dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/04/2005, 14h18
  3. [ArrayList]transformer l'objet récupéré en double...
    Par snoop dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 16/07/2004, 16h16
  4. [struts][jsp] problème avec request.getParameter
    Par stago dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/07/2004, 23h52
  5. [jsp]problème avec request.getParameter(...)!
    Par fadoua dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 01/09/2003, 13h26

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