2009-01-15 7 views
0

Voici mon problème, je construis une application modulaire, et j'utilise SwitchAction dans le fichier struts-config.xml pour passer à un autre fichier de configuration, mais le problème est que lorsque je change de l'autre module, et revenir à la config xml par défaut, j'obtiens une erreur, parce que ma page utilise une requête AJAX pour obtenir des données de la base de données, et j'ai découvert que le préfixe que j'ai d'abord envoyé pour changer le module est de retour et son retour la mauvaise url. Voici un exemple pour mieux comprendre:Problèmes avec Struts et AJAX

Page modulos.vm, en accédant au lien du nouveau, le lien du nouveau a le préfixe "nouveau" donc il accède à la page dans le "nouveau" module avec cette URL "/ nouveau/nouveau. do ", accédant sans problème au fichier new.vm, accédant de nouveau à modulos.vm, la fonction AJAX devrait être" /admin/modulos.do?somedata ", mais l'URL renvoyée est" /new/admin/modulos.do ", et je ne sais pas quoi faire, en accord avec la documentation struts" préfixe - Le préfixe du module (commençant par "/") du module auquel le contrôle doit être commuté Utiliser une chaîne de longueur nulle pour le module par défaut. l'objet ModuleConfig approprié sera stocké en tant qu'attribut de requête, de sorte que toute logique ultérieure assumera le nouveau module. "

Alors quelqu'un a-t-il une idée de la raison pour laquelle AJAX inclut le "nouveau" dans l'URL? ou quelqu'un a une idée sur la façon d'éclaircir le chemin relatif ou quelque chose qui peut m'aider? Presque oublier de mentionner que j'utilise JQuery pour appeler la fonction AJAX.

Répondre

1

Vous devez utiliser des URL absolues plutôt que relatives. Au moment où votre JavaScript construit une URL relative basée sur le chemin de contexte actuel.

Si vous utilisez JSP, vous pouvez mettre dans votre tête:

<script type="text/javascript"> 
var CONTEXT_PATH = "<%= request.getContextPath() %>"; 
</script> 

Et puis quand vous faites l'appel AJAX, vous devez construire l'URL comme ceci:

$.post(CONTEXT_PATH + '/admin/modulos.do'....) 

C'est ce que je fais si j'ai besoin d'obtenir le chemin du contexte en JavaScript - alors utilisez-le partout où je dois faire un appel AJAX au serveur.

Questions connexes