我们正在使用spring dwr实现来执行ajax调用。来自dwr_provider_xml的片段看起来像......
<bean id="remoteClass"
class="x.y.z.RemoteImpl">
<dwr:remote javascript="AjaxSessionManager">
<dwr:include method="testMethod" />
</dwr:remote>
</bean>
Javascript电话:
if ( AjaxSessionManager != undefined ) {
AjaxSessionManager.testMethod();
}
在服务器端,我们有一些公共代码来检查这个调用是否是ajax调用并执行一些额外的步骤。
private static final String XMLHTTPREQ = "XMLHttpRequest";
public static boolean isAjaxCall(HttpServletRequest request) {
return XMLHTTPREQ
.equals(request.getHeader("X-Requested-With"));
}
但是这个方法永远不会返回true,当我通过Fiddler跟踪时,请求标头不会被发送。我相信jQuery,dojo和其他流行的框架默认设置这个。我们必须明确地为DWR定义一些东西吗?任何帮助表示赞赏。
答案 0 :(得分:0)
我找到了解决方案。 DWR提供了一个要传递的头文件选项,所以我的方法调用现在看起来像这样......
AjaxSessionManager.testMethod({callback:{},
headers: {'X-Requested-With':'XMLHttpRequest'}
);