2016-05-25 2 views
1

Je me demande comment je peux utiliser la fonction générique Struts2 pour rediriger les utilisateurs vers une autre action en fonction de la valeur de retour:Comment utiliser la totalité de la valeur générique à la suite de redirection dans Struts2

struts.xml:

<action name="menu" class="a.b.c.d.e.f.actions.SecureMenuAction" method="prompt" > 
     <result name="success" type="tiles">.clf.sm</result> 
     <result name="input" type="tiles">.clf.smLevel3</result> 
     <result name="*" type="redirectAction">{1}</result> 
    </action> 

action:

String redirectString; 
// --- code --- \\ 
return redirectString; 

Dans certains cas, le résultat de retour SUCCESS o r INPUT est valide, mais dans tous les autres cas, je veux que la chaîne exacte que je renvoie soit utilisée comme emplacement de redirection.

Si je remplace mon struts.xml à:

<result name="test*" type="redirectAction">{1}</result> 

Alors le {1} sera remplacé par test, suivi par l'action correcte, je veux que l'utilisateur dirigé.

Cependant, si j'utilise simplement * comme nom de résultat, cela ne remplacera pas du tout (comme si la fonction générique ne pouvait pas être utilisée comme ceci).


Quelqu'un sait-il une manière que je peux obtenir ce travail en utilisant ce qui est disponible dans Struts2 (2.3.16.2)?

Répondre

1

Le nom du résultat "*" est et non un caractère générique. C'est une signification spéciale pour autre nom de résultat qui est pris si aucun nom de résultat correspondant si donné.

Si vous souhaitez rediriger l'action, vous devez fournir un getter pour le nom de l'action et utiliser le paramètre dynamique dans la configuration de résultat.

<action name="menu" class="a.b.c.d.e.f.actions.SecureMenuAction" method="prompt" > 
    <result name="success" type="tiles">.clf.sm</result> 
    <result name="input" type="tiles">.clf.smLevel3</result> 
    <result name="*" type="redirectAction">${redirectString}</result> 
</action>