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

Struts 1 Java Discussion :

Récuperer un bean dans une action Struts [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Récuperer un bean dans une action Struts
    Salut
    J'ai une liste d'utilisateur que j'affiche au sein d'un itérate. Lorsque je clique sur l'un d'entre eux, je souhaite récupérer le bean dans une action. J'ai bien lu la FAQ, je suis la procédure, mais cela ne semble pas marcher dans le cas d'une action
    Voici mon code :
    dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <logic:iterate id="liste"  type="fr.prisme.User"  scope="request" name="listeUser">
                <%
                	pageContext.setAttribute("list", liste);
                %>
    <html:link paramId="user" paramName="list"  action="/fillIntervenant">
    <bean:write name="liste" property="prenom"/>
     <bean:write name="liste" property="nom"/>
    </html:link>
    et dans l'action :
    User user = (User)(request.getSession().getServletContext().getAttribute("list")); me donne un user null
    User user = (User)(request.getSession().getServletContext().getAttribute("user")); aussi

    Ou est le pb ?

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut Re: Récuperer un bean dans une action Struts
    Citation Envoyé par ksavieras
    et dans l'action :
    User user = (User)(request.getSession().getServletContext().getAttribute("list")); me donne un user null
    User user = (User)(request.getSession().getServletContext().getAttribute("user")); aussi

    Ou est le pb ?
    Tel que tu l'as écrit tu recherches dans le scope application.

    Utilises request.getParameter(user);

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé aussi, mais j'obtiens un truc du genre fr.prisme.User@sdfsd mais je ne sais pas comment l'exploiter, j'ai cherché une methode du genre getObjectByAdress (un peu à l'arrahe j'avoue) mais j'ai rien trouvé
    Existe t'il une méthode qui reconstruirais le bean à partir de son adresse ?

    Merci

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    effectivement getParameter renvoie un String, il n'est pas possible de passer/récupérer un objet.

    Tu peux par exemple définir une Map avec tous les attributs afin de passer plusieurs paramètres dans ton lien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <logic:iterate id="user"  type="fr.prisme.User"  scope="request" name="listeUser">
                <%
                   java.util.Map params = new java.util.HashMap();
                   params.put("prenom", user.getPrenom());
                   params.put("nom", user.getNom());
                   pageContext.setAttribute("paramsMap", params);
                %>
    <html:link name="paramsMap" action="/fillIntervenant">
    <bean:write name="user" property="prenom"/>
     <bean:write name="user" property="nom"/>
    </html:link>
    Amélioration possible : tu peux définir un accesseur au niveau de ton bean qui renvoie la Map, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:iterate id="user"  type="fr.prisme.User"  scope="request" name="listeUser">
    <html:link name="user" property="paramsMap" action="/fillIntervenant">
    <bean:write name="user" property="prenom"/>
     <bean:write name="user" property="nom"/>
    </html:link>
    Le lien donnera par exemple /fillIntervenant?prenom=toto&nom=titi et tu pourras récupérer chaque valeur pour reconstruire le bean.

    Bon courage

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui j'avais pensé à cette solution même si je la trouve un peu "décevante".
    Mais à toi de m'avoir confirmé que la méthode que je cherchais n'existe pas avec struts

Discussions similaires

  1. <jsp:include> dans une action struts
    Par calojiro dans le forum Struts 1
    Réponses: 8
    Dernier message: 03/03/2010, 16h40
  2. Réponses: 2
    Dernier message: 23/03/2009, 13h25
  3. [Struts] probleme injection spring dans une action Struts
    Par otam_otam dans le forum Spring Web
    Réponses: 1
    Dernier message: 03/03/2009, 12h24
  4. Changer de bean dans une Action
    Par ederf dans le forum Struts 1
    Réponses: 4
    Dernier message: 04/08/2008, 11h35
  5. [Struts] [JavaBean] Deux beans dans une Action
    Par jak0 dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/05/2005, 16h02

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