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 :

Paramètrer la page appelée après execution de la méthode Validate()


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut Paramètrer la page appelée après execution de la méthode Validate()
    Bonjour à tous,

    J'utilise au sein de plusieurs pages JSP un <c:import> d'une page JSP contenant un formulaire. La validation de ce formulaire est effectuée dans la méthode validate() de l'ActionForm associé.

    Voici mon problème: lorsqu'une erreur est détectée dans validate(), Struts redirige vers la page JSP contenant le formulaire, qui est une page "toute nue" ne contenant que ce formulaire. Mais j'aimerais qu'il me renvoye vers la JSP "englobante", celle qui contient le <c:import>. Cela doit donc être géré dynamiquement, car ce n'est qu'à l'exécution que l'on sait quelle est cette page.

    J'ai déjà fait une redirection dynamique dans la méthode exectute() d'une Action, en renvoyant une ActionForward paramètrée. Mais cette manière de faire est impossible dans la méthode validate() de l'ActionForm.

    Est-il possible de faire ce genre de chose en utilisant la méthode Validate() pour la validation des formulaires?

    Je vous remercie d'avance pour toute information qui pourrait me mettre sur la voie.

    Bonne continuation à tous,
    Houbbba.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Points : 129
    Points
    129
    Par défaut
    Dans ton struts-config.xml, tu dois avoir un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/submitFormulaire" type="MyAction"
    			input="page jsp" name="ActionForm">
    </action>
    s'il y a une erreur, ce sera automatiquement redirigé vers la jsp indiqué dans le champ "input"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta réponse Cronycs,

    Mais comme je l'ai mentionné dans mon message:
    Cela doit donc être géré dynamiquement, car ce n'est qu'à l'exécution que l'on sait quelle est cette page.
    Pour info, j'ai également essayé, dans la méthode validate(), de modifier l'Input dynamiquement en utilisant les objets mapping et request passé à la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mapping.setInput(request.getHeader("referer"));
    mais j'obtient cette exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    java.lang.IllegalStateException: Configuration is frozen
    	org.apache.struts.config.ActionConfig.setInput(ActionConfig.java:219)
    	com.woof.struts.form.QuickLoginForm.validate(QuickLoginForm.java:86)
    	org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:928)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    La vie est dure...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Va faire un tour sur ce post, ca pourra peut-être t'aider : http://www.developpez.net/forums/sho...d.php?t=318993

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Je crois que ce que Houbbba recherche n'est pas de choisir la page qui sera chargée dans une Action, mais dans la méthode validate d'un form.
    Etant donné que cette méthode validate ne renvoie pas un ActionForward, mais les messages d'erreurs à afficher sur la page, savoir comment construire soi-même un ActionForward n'aide pas (ou peu) dans ce cas.
    Si quelqu'un d'autre a une idée, ce problème m'intéresse aussi.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Merci pour vos réponses,

    En effet thomzon, c'est exactement mon problème. Et je n'y ai toujours pas trouver de solution

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    dans l'input, tu peux mettre une action à la place de la jsp.
    Et dans cette action, tu peux alors rediriger vers la jsp englobante, non?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Mais c'est bien sur!

    Merci mattheox ça résoud complètement mon problème

    Et merci à tous pour votre aide.

    Houbbba.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    J'ai essayé de mon côté, et nouveau problème.
    Mettre une action dans l'input fonctionne bien. Par contre, je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String referer = request.getHeader("referer");
    return new ActionForward(referer, true);
    pour retourner à la page appelante. Et ça marche bien aussi, seulement, les messages d'erreurs n'apparaissent pas.

  10. #10
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut mettre une action dans un input...!
    salut!

    je développe un service web basé sur struts retournant des réponses à des applications clientes.
    Les réponses sont élaborées en fonction des paramètres passées dans l'URL par les applications clientes...
    le tout se fait sans utiliser aucune JSP, uniquement un ValidatorForm récupérant les valeurs des paramètres reçus par l'URL et un Action exécutant la construction de la réponse et son expédition à l'application cliente

    Pour vérifier la validité des valeurs des paramètres que mon appli reçoit j'utilise (voudrait utiliser) le plug in Validator de struts...

    le soucis c'est qu'en cas d'échec de la validation, le Validator est sensé lancer la page définie comme "input" dans ma balise <action> du strut-config.xml...
    or dans le cas d'un échec de validation je dois réaliser d'autres traitements à partir des messages d'erreurs récoltés et retourner une réponse d'erreur spécifique et pas afficher une JSP!!!
    j'ai donc besoin de faire une redirection vers une classe Action chargée de gérer les cas d'erreurs

    d'après vos derniers messages ils sembleraient vous ayez l'astuce pour "mettre une action dans le input"...
    ça m'interesse!!!!
    comment dois-je m'y prendre?

    merci d'avance

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Heu, la réponse est dans la question ?....
    Dans le input, tu mets ton action, "/tonAction.do" par exemple, et sur un validate false, ca appelera ton action avec en attribut de requête les ActionMessage de ton validate.
    Y a pas d'astuce, c'est le fonctionnement normal de Struts.

  12. #12
    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
    Tout simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input="/pathDeTonAction.do"
    EDIT : Grillée par mixouille

    EDIT2 : plutôt avec un validate="true".

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par c_nvy
    EDIT2 : plutôt avec un validate="true".
    Oui, bon, on s'est compris : "sur un échec de la méthode validate"

  14. #14
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    yeah!!!

    et oui je suis un peu con là!!!
    dans les messages précédant y'avait marqué "mettre une action dans le input" et du coup je pensais bêtement qu'il s'agissait de spécifier un type (une classe Action à instancier...) au lieu d'un path... et là forcément ça me semblait plus que mystérieux!!!!
    et du coup je voulais en savoir un peu plus sur cette fameuse "astuce"...
    (rassurez vous, à moi aussi je fais de la peine... j'ai presque envie de me planquer sous mon bureau)

    merci en tout cas pour vos réponses rapide!!!!!!!!!!!!!!!!!!!

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

Discussions similaires

  1. [ZF 1.8] Libérer les paramètres dans l'URL après visite d'une page avec parametre
    Par mymind dans le forum Zend Framework
    Réponses: 3
    Dernier message: 24/07/2009, 12h00
  2. [PHP 5.0] Créer un fichier HTML aprés execution de la page PHP
    Par johnson95 dans le forum Langage
    Réponses: 10
    Dernier message: 20/12/2008, 13h01
  3. charger une page apres execution d'une fonction
    Par lacsap49 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2006, 17h25
  4. Réponses: 1
    Dernier message: 10/02/2006, 18h19

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