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 :

Attribut redirect de forward


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut Attribut redirect de forward
    bonjour,
    est ce que quelqu'un peut m'expliquer l'utilité de cet attribut?
    est ce qu'on peut défénir une action de redirection en mettant cet attribut à false??
    dans l'exemple suivant
    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
     
    <action path="/action1"
                type="typeAction1"
                name="form1" input="tiles.form1" validate="false"
                scope="request" >
          <forward name="success" path="/action2.do" redirect="false"/>
         </action>
     
    <action path="/action2"
                type="typeAction2"
                name="form2" input="tiles.form2" validate="false"
                scope="request" >
          <forward name="success" path="/action3.do" redirect="true"/>
         </action>
     
     
     
    <action path="/action3"
                type="typeAction3"
                name="form3" input="tiles.form3" validate="false"
                scope="request" >
          <forward name="success" path="/action4.do" redirect="true"/>
         </action>
     
         </action>
    quand j'execute l'action1 il me redirige directement vers action3 (en passant par l'action2)
    je comprends pas bien ce comportement
    Merci de me l'expliquer

  2. #2
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Bonjour badoress,

    Qu'est ce que tu ne comprends pas dans ce fonctionnement?

    Tu fais un forward de l'action1 vers action2 et un forward de l'action2 vers action3. C'est donc normal que lorsque tu vas sur l'action1 ca te renvois au final sur la 3?

    Pour info le redirect=true sert uniquement à ne pas faire un juste un forward interne coté serveur mais a faire le même role qu'un sendRedirect (donc aller retour coté client).

  3. #3
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    le comportement normal (comme lorsque je met redirect à true) c'est qu'il doit me rediriger vers le form2 qui correspond à l'action2 et en submit du form2 il doit me rediriger vers form3 (action 3)
    or c'est pas le cas il me redirige directement vers le form3
    j'espère que j'étais clair

  4. #4
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Citation Envoyé par badoress Voir le message
    le comportement normal (comme lorsque je met redirect à true) c'est qu'il doit me rediriger vers le form2 qui correspond à l'action2 et en submit du form2 il doit me rediriger vers form3 (action 3)
    or c'est pas le cas il me redirige directement vers le form3
    j'espère que j'étais clair
    Mais quand tu dis en submit du form2, cela veut dire quoi?
    Ton action2 ne mene vers aucune JSP, donc je ne vois pas trop comment tu peux valider un form (coté client)?

    J'ai loupé quelque chose?

  5. #5
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    càd en cliquant sur le submit du form1 il me mene sur le form 2 et en cliquant sur le submit du form 2 il me mene dans le form3
    mais quand je met redirecte à false en cliquant sur le submit du form 1 il me mene directement vers le for3 sans passer par le form 2 c'est ce que j'ai pas compris

  6. #6
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Citation Envoyé par badoress Voir le message
    càd en cliquant sur le submit du form1 il me mene sur le form 2 et en cliquant sur le submit du form 2 il me mene dans le form3
    mais quand je met redirecte à false en cliquant sur le submit du form 1 il me mene directement vers le for3 sans passer par le form 2 c'est ce que j'ai pas compris
    Tu parles de cliquer sur submit et par rapport à ton struts-config, je ne vois ou tu peux cliquer pourrais tu mettre le contenu de tes actions parce que la je suis un peu paumé.

  7. #7
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    siii il ya sur quoi cliquer regarde l'attribut input ds mon struts-config input="tiles.form2" donc ya des jsp ou il y a le bouton submit
    pour mes actions je fais un mapping.findForward("succes")

  8. #8
    Expert confirmé

    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
    Par défaut
    Le forward vers la page spécifiée dans l'attribut input, soit tiles.form2, se fait en cas d'erreur de validation, soit dans ton cas jamais puisque validate="false".
    Il peut se faire aussi dans le cas d'une gestion d'erreurs dans l'Action, à condition d'utiliser un mapping.getInputForward().

    Donc, pour que le forward se fasse vers tiles.form2 avec un mapping.findForward("success"), il faut mettre tiles.form2 dans l'attribut path du forward de name success à la place de /action2.do.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/action1" type="typeAction1"
            name="form1" validate="false" scope="request" >
          <forward name="success" path="tiles.form2"/>
    </action>

  9. #9
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Citation Envoyé par badoress Voir le message
    siii il ya sur quoi cliquer regarde l'attribut input ds mon struts-config input="tiles.form2" donc ya des jsp ou il y a le bouton submit
    pour mes actions je fais un mapping.findForward("succes")
    Comme l'a dit c_nvy, tu n'utilises pas correctement le struts-config.
    Je te conseille de faire un petit tour sur la dtd du site

    jakarta.apache.org/struts/dtds/struts-config_1_1.dtd

    Tu verras les commentaires qu'il faut concernant l'utilisation de input :

    input Module-relative path of the action or other resource to
    which control should be returned if a validation error is
    encountered. Valid only when "name" is specified. Required
    if "name" is specified and the input bean returns
    validation errors. Optional if "name" is specified and the
    input bean does not return validation errors.

  10. #10
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    oui oui vous avez tous raison j'etai un peu stressé hier(c'est la fin de la semaine) c'est pourquoi j'ai dit ces conneries
    Envoyé par badoress Voir le message
    siii il ya sur quoi cliquer regarde l'attribut input ds mon struts-config input="tiles.form2" donc ya des jsp ou il y a le bouton submit
    pour mes actions je fais un mapping.findForward("succes")
    en fait la declaration de mes formulaires se fait grace au tag form bean
    par exemple pour le form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form-bean name="form1"   type="security.Fom1" />
    et comme a dit c_nvy j'utilise le input pour la gestion d'erreurs dans mes actions avec le mapping.getInputForward()

    donc là yolepro je pense que j'ai sur quoi cliquer
    Rappel:

    le comportement normal (comme lorsque je met redirect à true) c'est qu'il doit me rediriger vers le form2 qui correspond à l'action2 et en submit du form2 il doit me rediriger vers form3 (action 3)
    or c'est pas le cas il me redirige directement vers le form3

    expliquez moi maintenant

  11. #11
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    badoress,

    Voila comment j'utilise Struts normalement. Les autres confirmerons ou infirmerons

    Cas standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <action path="/action1"
                type="typeAction1"
                name="form1" validate="false"
                scope="request" >
          <forward name="success" path="/monForm1.jsp"/>
         </action>
         <action path="/action2"
                type="typeAction2"
                name="form1" validate="false"
                scope="request" >
          <forward name="success" path="/monForm2.jsp"/>
         </action>
    Dans ma jsp j'ai un formulaire que je peux valider via un bouton submit.

    Lorsque j'appel action1.do, l'action est excecutée (elle fait son binz, genre je remplis le formulaire avec des valeurs par defaut, je mets des listes de référentiels en request).
    Cela forward vers monForm1.jsp.

    Je valide le bouton de monForm1.jsp, cela appelle l'action action2.

    Mais si je veux ajouter de la validation de surface, alors je modifie certain parametre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <action path="/action1"
                type="typeAction1"
                name="form1" validate="false"
                scope="request" >
          <forward name="success" path="/monForm1.jsp"/>
         </action>
         <action path="/action2"
                type="typeAction2"
                name="form1" validate="true"
                input="maPageErreur.jsp"
                scope="request" >
          <forward name="success" path="/monForm2.jsp"/>
         </action>
    Dans ce cas, lorsque je valide le formulaire de monForm1.jsp, la validation de surface se met en marche via le validate="true" et si une erreur m'est remontée je vais vers maPageErreur.jsp sinon je rentre directement dans action2.

    En bref dans ton cas, aucune validation de surface n'est faite, tu ne fais que contourner l'utilisation standard de l'attribut input.

    Je me trompe?

  12. #12
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    yolepro a raison,
    input indique vers quel page/action se rediriger en cas d'erreur dans le validate() du form.
    quant à redirect="true" il renvoie une http302 au client (exécution d'une nouvelle requête vers l'action désignée) à la différence d'un forward server-side sinon.

  13. #13
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    Merci pour vous tous

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

Discussions similaires

  1. Forward et redirect dans une jsp
    Par hadler dans le forum Struts 1
    Réponses: 4
    Dernier message: 03/02/2009, 15h40
  2. [Forward / Redirect] Probléme
    Par wayle dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 13/08/2007, 12h30
  3. Réponses: 3
    Dernier message: 09/08/2007, 10h47
  4. Réponses: 8
    Dernier message: 30/04/2007, 20h18
  5. Redirection de port routeur (forward)
    Par Fabouney dans le forum Hardware
    Réponses: 6
    Dernier message: 29/09/2005, 09h29

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