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 :

Passer un ActionForm à une autre classe sans utilisation de session.


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 86
    Points : 55
    Points
    55
    Par défaut Passer un ActionForm à une autre classe sans utilisation de session.
    Bonjour à tous,

    J'ai besoin de crée un "faux" formulaire dans une de mes classes et de le passer à une autre classe sans utiliser pour autant des .jsp

    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (...)
    AuthenForm authenform = new AuthenForm();
    authenform.setUser("qwerty");
    authenform.setPassword("ytrewq");
    (...)
    Ensuite mon

    return Mapping.findforward("succes");
    Appel ma classe d'authentification

    Celle-ci utilisant justement AuthenForm pour faire l'authentification de l'utilisateur.

    Je sais que je pourrais simplement faire session.setAttribute("AuthenForm",authenForm) et dans ma classe d'authentification faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
                                     HttpServletRequest request, 
                                     HttpServletResponse response) throws Exception {
    ActionForward action = init(request, mapping.getPath());
     AuthenForm authenForm ;
    if(session.getAttribute("authenForm") != null)
      authenForm = (AuthenForm)session.getAttribute("authenForm");
    else // lorsqu'il s'agit d'une authentification via le formulaire d'authentification
     authenForm = (AuthenForm)form;
    (...)
    Mais j'aimerais savoir si il existe une façon de faire le transfert d'un formulaire d'une classe vers une autre sans passé par une .jsp et sans session.setAttribute.


    En vous remerciant,

    P.S. : Avant que l'on m'avise, j'ai utilisé l'onglet de recherche et j'ai vu qu'il y a des sujets "semblable" au mien , mais leurs cas et leurs applications semble différent et surtout dans la plupart la solution du session.set .... est la suggestion donnée.

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si le forward de name "success" est bien un forward vers l'Action d'authentification, soit un .do, tu dois pouvoir stocker le form-bean authenForm dans le scope request plutôt que session et le récupérer dans l'Action d'authentification via un request.getAttribute().

    Par contre, il faut s'assurer que le scope du form-bean authenForm est bien aussi égal à request dans le mapping de la classe d'authentification.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Ouin request ou session , dans les 2 cas j'aurais aimé avoir une autre solution mais enfin bref.... C'est comme sa que je l'ai fait ( request ) et sa fonctionne bien ! ..

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je comprends bien pourquoi tu ne voulais pas mettre ton form-bean dans le scope session mais je ne vois pas en quoi ça te gêne de le mettre dans le scope request ?

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, après réflexion, il y a beaucoup plus simple que de faire un request.setAttribute.

    Il suffit d'ajouter le form-bean dans le mapping de l'Action qui l'initialise avec l'attribut scope à request et l'attribut validate à false.

    Et ainsi, dans la première Action, tu y accèdes et tu l'initialises comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AuthenForm authenForm = (AuthenForm) form;
    authenform.setUser("qwerty");
    authenform.setPassword("ytrewq");
    Et dans l'Action d'authentification, tu y accèdes également comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AuthenForm authenForm = (AuthenForm) form;
    Dans ce cas, tu n'as plus besoin de coder un request.setAttribute sur le form-bean, celui-ci étant automatiquement mis dans le scope request par Struts.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 16/04/2012, 17h07
  2. Réponses: 4
    Dernier message: 21/03/2011, 15h08
  3. Réponses: 6
    Dernier message: 12/11/2006, 16h46
  4. debutant : classe utilisant une autre classe
    Par zoubla dans le forum Débuter
    Réponses: 6
    Dernier message: 20/10/2006, 15h40
  5. Réponses: 2
    Dernier message: 02/05/2006, 14h34

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