这是我的问题,我正在构建模块化应用程序,我正在使用struts-config.xml中的SwitchAction更改为另一个配置文件,问题是当我更改为其他模块时,回到默认的配置xml,我收到一个错误,因为我的页面使用AJAX请求从数据库中获取一些数据,我发现我第一次发送更改模块的前缀正在回归并返回错误的网址。以下是一个更好的未久的例子:
Page modulos.vm,访问新的链接,new的链接有前缀“new”所以它使用这个URL“/new/new.do”访问“new”模块中的页面,访问new.vm一个问题,再次访问modulos.vm,AJAX函数应该是“/admin/modulos.do?somedata”,但返回的URL是“/new/admin/modulos.do”,我不知道该怎么办,与struts文档“前缀 - 应该切换控件的模块的模块前缀(以”/“开头)相对应。使用零长度字符串作为默认模块。相应的ModuleConfig对象将作为请求存储属性,因此任何后续逻辑都将采用新模块。“
所以任何人都知道为什么AJAX在URL中包含“new”?或者任何人都知道如何清理相对路径或可能对我有帮助的东西?
几乎忘记提到我正在使用JQuery来调用AJAX函数。
答案 0 :(得分:1)
您需要使用绝对URL而不是相对URL。目前,您的JavaScript正在根据当前上下文路径构建相对URL。
如果您正在使用JSP,可以将其放在标题中:
<script type="text/javascript">
var CONTEXT_PATH = "<%= request.getContextPath() %>";
</script>
然后当您进行AJAX调用时,您需要像这样构建URL:
$.post(CONTEXT_PATH + '/admin/modulos.do'....)
如果我需要将上下文路径导入JavaScript,我就会这样做 - 然后只需在需要向服务器发出AJAX调用的地方使用它。