J'ai une action de connexion qui après une exécution réussie redirige vers la page précédente (je stocke la page précédente dans ma session afin que je puisse la récupérer plus tard). En Struts2, je peux trouver deux façons de le faire cette redirection.Struts2 redirigeant vers une autre action avec un nombre inconnu de paramètres
<action name="login" class="com.myapp.login.Login">
<result name="redirect" type="redirect">${previousAction.requestURL}</result>
</action>
Dans cet exemple, la méthode getPreviousAction() getRequestURL() (ce qui est une méthode selfmade, sa non ntive à Struts2) sera invoquée et cela renvoie l'url de la page précédente comme prévu, par exemple:
somenamespace/index.action
Il y a aussi un autre type de redirection:
<action name="login" class="com.myapp.login.Login">
<result type="redirectAction">
<param name="actionName">${previousAction.name}</param>
<param name="namespace">/${previousAction.namespace}</param>
</result>
</action>
Je veux utiliser ce résultat redirectaction tapez parce que c'est beaucoup plus propre. Mais, j'ai un problème lorsque les paramètres de requête font partie de l'URL. Par exemple:
somenamespace/index.action?name=john&age=50
Je sais que je peux ajouter ces params dans mon struts.xml codées en dur, mais le problème est mon action de connexion doit rediriger toute action précédemment invoqué, et je ne sais pas à l'avance qui paramètres de requête précédent actions avaient. Ceci est différent de l'usecase typique où vous savez exactement à quelle action vous redirigez
Une très mauvaise solution que j'ai trouvée était d'ajouter tous les paramètres possibles (la collecte de tous les paramètres de toutes mes actions dans struts.xml) et puis utilisez l'option:
<param name="suppressEmptyParameters">true</param>
meilleure façon de définir votre paramètre dans la portée de la requête et de les récupérer tous dans votre prochaine action –
http://struts.apache.org/development/2.x/docs/parameters-in-configuration-results.html. –