Java Struts和AJAX的问题

Java Struts和AJAX的问题,java,ajax,struts,Java,Ajax,Struts,这是我的问题,我正在构建一个模块化应用程序,我正在使用struts-config.xml中的SwitchAction更改为另一个配置文件,eht的问题是,当我更改为另一个模块,并返回到默认的配置xml时,我得到了一个错误,因为我的页面使用AJAX请求从数据库获取一些数据,我发现我第一次发送用来更改模块的前缀返回了错误的url。下面是一个更好理解的示例: Page modulos.vm,访问new的链接,new的链接有前缀“new”,所以它使用这个URL“/new/new.do”访问“new”模块

这是我的问题,我正在构建一个模块化应用程序,我正在使用struts-config.xml中的SwitchAction更改为另一个配置文件,eht的问题是,当我更改为另一个模块,并返回到默认的配置xml时,我得到了一个错误,因为我的页面使用AJAX请求从数据库获取一些数据,我发现我第一次发送用来更改模块的前缀返回了错误的url。下面是一个更好理解的示例:

Page modulos.vm,访问new的链接,new的链接有前缀“new”,所以它使用这个URL“/new/new.do”访问“new”模块中的页面,访问new.vm没有问题,再次访问modulos.vm,AJAX函数应该是“/admin/modulos.do?somedata”,但是返回的URL是“/new/admin/modulos.do”,我不知道该怎么办,根据struts文档“prefix-控制应切换到的模块的模块前缀(以“/”开头)。对默认模块使用零长度字符串。适当的ModuleConfig对象将存储为请求属性,因此任何后续逻辑都将采用新模块。”

那么,有人知道为什么AJAX会在URL中包含“new”吗?或者有人知道如何清理相对路径或其他可能对我有帮助的东西吗


几乎忘了提到我正在使用JQuery调用AJAX函数

您需要使用绝对URL而不是相对URL。目前,JavaScript正在基于当前上下文路径构建相对URL

如果您使用的是JSP,则可以将其放在标题中:

<script type="text/javascript">
var CONTEXT_PATH = "<%= request.getContextPath() %>";
</script>
如果我需要将上下文路径转换成JavaScript,我会这样做——然后在需要对服务器进行AJAX调用的任何地方使用它

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