Puis-je propager struts2 ActionErrors entre les différentes classes d'action?
Si j'ai une action dont le résultat est un redirectAction à une autre action dans une classe différente, est-il possible d'obtenir la validation des erreurs à afficher dans le résultat de l'action? E. g. dans l'exemple suivant, si un utilisateur exécute actionA (qui n'a pas de points de vue qui lui est associé), et il y a des erreurs, est-il un moyen d'afficher ces erreurs dans les actionB résultat (foo.jsp)? Ou vais-je à propos de cette complètement le mauvais sens?
<package name="a" extends="struts-default" namespace="/a">
<action name="actionA" class="actionAClass">
<result name="input" type="redirectAction">
<param name="actionName">actionB</param>
<param name="namespace">/b</param>
</result>
<result type="redirectAction">
<param name="actionName">actionB</param>
<param name="namespace">/b</param>
</result>
</action>
</package>
<package name="b" extends="struts-default" namespace="/b">
<action name="actionB" class="actionBClass">
<result>/foo.jsp</result>
</action>
</package>
Essayez d'utiliser MessageStore Intercepteur - struts.apache.org/release/2.3.x/docs/...
OriginalL'auteur sk. | 2009-07-01
Vous devez vous connecter pour publier un commentaire.
Il y a peut être un moyen de le faire, mais je ne pense pas que c'est une très bonne façon d'utiliser des entretoises. Si actionA est l'échec de la validation, vous plus souhaitez avoir soit un non-rediriger les entrées résulter pour elle qui montre les erreurs, ou peut-être une erreur globale de la page, qui peut le montrer.
Je suppose que vous pourriez stocker l'action des erreurs quelque part, comme la session entre la redirection, mais vous ne pouvez pas vraiment être en utilisant le framework comment il a été conçu.
OriginalL'auteur Brian Yarger
Struts2 par défaut dispose d'un magasin de l'intercepteur. Il stocke les actionMessages, actionErrors et fieldErrors en session dans un MAGASIN de mode et vous pouvez récupérer les mêmes dans les rediriger à l'aide de la même intercepteur en l'utilisant en mode de récupération. Plus de détails peuvent être trouvés ici
OriginalL'auteur Sarvjeet Ahuja
Fondamentalement, vous devez utiliser prédéfinis intercepteurs appelé le magasin qui prend operationMode: stocker et de récupérer:
OriginalL'auteur samsina
Je trouve une meilleure solution pour passer de l'action des erreurs et des messages sur actionRedirect type de résultat. Il est travaillé pour moi.
Ce qu'il est ..... Heureux de codage
<param name="actionErrors">${actionErrors}</param>
ce n'est toute la magie.Est-ce à transmettre à la fois l'action des erreurs et des messages ou avez-vous besoin d'
<param name="actionMessages">${actionMessages}</param>
de faire passer un message?<param name="actionMessages">${actionMessages}</param>
fait passer les messages. Merci!Vous, qui vous permettra de toujours finir dans le résultat "d'entrée" de l'action2 et la méthode d'exécution de cette action n'est pas appelé...
OriginalL'auteur Jibran
Résultat de type chaîne de copier des messages d'erreurs résultant de l'action si vous ne la suite dans struts.xml ou de jambes de force.fichier de propriétés -
Exemple (struts.xml)-
OriginalL'auteur tiwari.vikash
Utilisation
ActionContext.getContext().getSession().put(key, value)
dans la première action, et de la récupérer à l'aide deActionContext.getContext().getSession().get(key)
dans leredirectedAction
etaddActionErrors
à l'Action principaleMessageStoreInterceptor - struts.apache.org/release/2.3.x/docs/...
OriginalL'auteur Meena
Le magasin de l'intercepteur (
MessageStoreInterceptor
) peut être utilisé pour stocker et récupérer desactionErrors
,actionMessages
etfieldErrors
.Vous pouvez changer le fonctionnement de stocker de l'intercepteur à la volée en passant par le
operationMode
paramètre à l'actionhttp://localhost/sample.action?operationMode=STORE
Vous pouvez définir le magasin de l'intercepteur dans
STORE
mode dans votre pile par défaut qui permet à tous d'action message pour être stockées dans la session.Pour obtenir les messages, vous devez ajouter
store
intercepteur dansRETRIEVE
mode à l'action spécifique qui a besoin de ces messages.C'est un échantillon global d'erreur de la page qui est redirigé vers, cette action peut lire
actionErrors
,fieldErrors
etactionMessages
lorsque nous ajoutons lestore
intercepteur, et s'est mis à laoperationMode
àRETRIEVE
:La
MessageStoreInterceptor
supprimer les erreurs avant d'en ajouter de nouvelles.Vous pouvez définir la boutique en
AUTOMATIC
en vous de la pile par défaut. De cette façon, tous les messages sont stockés toujours et sera automatiquement renouvelée lors de l'action le résultat est le type deServletRedirectResult
(Par exemple, si l'action "redirectAction', 'redirect') de Sorte que vous n'avez pas besoin de définir explicitementstore
intercepteur dansRETRIEVE
mode.Bien que ce n'est pas une bonne approche, mais vous pouvez accéder à la boutique de messages dans la session avec ces touches.
OriginalL'auteur Alireza Fattahi
Cette fonctionnalité n'est pas supportée par Struts2 par défaut. La Solution existe (il est fait par simple struts intercepteur qui stocke les messages dans la session).
la solution à code source
OriginalL'auteur rdk
Vous pouvez utiliser le type "chaîne".
dans le show.jsp, vous pouvez afficher les actions des erreurs ou des messages d'action que vous définissez dans l'action de suppression
chain
est découragé.OriginalL'auteur Szymon Lisiecki
Ce travail en me
ajouter cette ligne dans struts.xml :
utiliser le type "chaîne" et ajouter le résultat avec le nom "entrée" :
OriginalL'auteur Mozquito