Struts和AJAX的问题

时间:2009-01-15 11:25:32

标签: java ajax struts

这是我的问题,我正在构建模块化应用程序,我正在使用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函数。

1 个答案:

答案 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调用的地方使用它。