2011-04-20 4 views
1

J'écris une application struts2 et pour accéder au système que les utilisateurs doivent se connecter. L'action que j'ai fonctionne correctement et le système fonctionne bien, mais après que l'action renvoie "succès", il avance vers la page "welcome.jsp" mais l'URL se termine par "login.action". Pour rafraîchir la page, j'ai besoin que l'URL se termine par "welcome.jsp". Comment puis-je y parvenir sans utiliser javascript pour changer l'url manuellement? Merci beaucoup.Struts2 url probleme

Cette balise d'action dans mon fichier struts.xml ...

<action name="login" method="authenticate" class="LoginAction">  
     <result name="success">welcome.jsp</result> 
    <result name="error">login.jsp</result> 
</action> 
+0

Je suppose que vous ajoutez quelque chose à la session pour montrer que l'utilisateur est connecté? Si tel est le cas, vérifiez la classe "LoginAction" pour voir si cet attribut de session est défini et si l'utilisateur est connecté, retournez "success". Pour ce faire, il suffit que «LoginAction» implémente SessionAware, à partir de là, c'est plutôt simple. (Bien que vous devriez trouver comment refactoriser votre solution avec des intercepteurs, mais une étape à la fois). Cela ne change pas l'url comme vous l'avez demandé, mais cela fera disparaître le problème d'actualisation et donc le problème. – Quaternion

Répondre

2

Chaque URL dans une application à base d'action bien conçu doit pointer vers le servlet dispatching/filtre (c.-à-fin avec .action en votre cas), et jamais directement à un JSP. C'est ce que propose le modèle d'action des cadres basés sur l'action comme Struts. Pour faire ce que vous voulez faire, vous ne devriez pas transmettre à welcome.jsp après que la connexion soit réussie.

Vous devez à la place rediriger vers l'action welcome.action, qui sera ensuite redirigée vers le fichier welcome.jsp. Voir http://struts.apache.org/2.0.14/docs/redirect-action-result.html pour plus de détails. Et voir http://en.wikipedia.org/wiki/Post/Redirect/Get pour des explications sur le modèle Post/Redirect/Get.

+1

+1 L'exigence montre une mauvaise compréhension des fondamentaux de Struts2 (et MVC). – leonbloy

+0

Désolé pour la réponse différée. Je pense qu'il y avait un malentendu sur ce que j'essayais d'accomplir. Dans le système que je fais (un jeu) il y a une page d'accueil où il y a des champs qui sont interrogés de la base de données tels que le nombre de tours restants et l'argent etc. J'avais besoin de l'utilisateur pour actualiser la page pour mettre à jour les champs statiques. Je comprends le concept de MVC et réalise que ce que j'essayais de faire ne suit pas la procédure standard. Cela étant dit, je voudrais souligner que la solution à mon problème est de rendre les champs statiques dynamiques. Je vous remercie – MattTYXM