2010-06-10 13 views
0

Mon utilisation commune pour mon application Struts2 est que j'ai des actions qui collectent des données qui sont présentées sur une page JSP. Je vais appeler ces vues-actions.Struts2 RedirectAction: Params Interceptor et Workflow?

Mais j'ai aussi des actions logiques, qui "font" quelque chose en arrière-plan (comme enregistrer un utilisateur). Ceux-ci peuvent également avoir un bean qui doit être affiché sur une JSP, mais j'ai besoin de rediriger le résultat vers l'une des actions-vues. Malheureusement, le bean dont j'ai besoin depuis la première action n'est pas transféré dans ValueStack, mais seulement les valeurs des getters de l'action view. Exemple:

<action name="mailConfirm" class="de.abelssoft.updateyeti.Frontend.MailConfirmer"> 
    <result name="login" type="redirectAction"> 
    <param name="actionName">register</param> 
    <param name="email">${person.email}</param> 
    </result> 
    <result name="input" type="redirectAction"> 
    <param name="actionName">register</param> 
    </result> 
</action> 

Quel est le motif qui me manque ici? Ou dois-je stocker tout ce dont j'ai besoin dans le contexte de la réponse?

+0

Ce n'est pas très clair. Qu'entendez-vous par "une action qui fait quelque chose en arrière-plan"? Une action exécute une logique en réponse à une requête web, toujours. Pourriez-vous élaborer votre scénario ou donner un exemple? – leonbloy

+0

Exemple: un utilisateur soumet un commentaire dans un formulaire à l'action submitComment. L'URL appelée est "submitComment.action? Comment = thisisacomment". Un champ de l'action submitComment est défini avec la chaîne du commentaire, de sorte que le message "Votre commentaire 'thisisacomment' a été ajouté". Un autre exemple serait "[email protected]" ci-dessus. Une erreur de base de données se produit et l'utilisateur doit être informé à ce sujet. Le résultat de ces actions sont d'autres actions qui affichent le JSP affiché. Je veux que les messages/objets de la première action soient disponibles pour la seconde action. – Akku

+0

Désolé. Vos exemples ne clarifient pas grand chose, pour moi au moins. "Le résultat de ces actions sont d'autres actions qui rendent le JSP visualisé" - normalement vous n'avez pas d'action dédiée à l'affichage des résultats, cela va à l'encontre de MVC. Les résultats (99% du temps) sont affichés dans une page JSP qui lit les données de l'action exécutée. Le résultat type = "redirectAction" devrait être rare dans une application Struts2. Je recommande "Struts2 en action" de Mannings – leonbloy

Répondre

0

Je n'ai pas eu de réponse à cette question, je vais donc vous dire ce que j'ai fait. Désolé de ne pas fournir une "bonne réponse".

J'ai écrit deux intercepteurs. Un pour l'action logique qui stockerait temporairement des objets de message dans la session utilisateur et un pour mes actions de vue qui les prendraient et les retireraient de l'utilisateur. J'ai utilisé l'intercepteur d'actions logiques là où c'était nécessaire et j'ai utilisé l'intercepteur d'actions pour toutes les autres actions pour m'assurer que lorsqu'une action de redirection est arrivée avant l'action de vue, les objets-messages seront trouvés et utilisés.