项目的文件下载是用DWR3.0以上版本的文件下载功能实现的,因为它比较灵活,又可以绕过通过定义Servlet来支持文件下载时传值麻烦的问题(避免用Cache)。
在dwr的engine.js里面有个dwr.engine.openInDownload方法,我们在使用这个方法的时候发现一个问题:
新打开的页面第一次文件下载时被IE拦截了,并显示一个消息栏,原因是IE的安全机制会拦截非同步请求导致的文件下载,如果不想拦截,就得修改IE的安全设置,这样用户可能不会接受。
google了一下,好多DWR的论坛提到这个问题,但是没有什么可行的方法。通过尝试,使用下面方式,可以避免IE对文件进行拦截而又不需要修改客户端的任何设置
一般用来生成report或者下载文件的DWR远程方法这么调用:
//remote method invoke
dwrFunction(vo, fileType, dataList, {
callback : function(data){
dwr.engine.openInDownload(data.result); //这句调用DWR的文件下载
}
});
很明显dwr.engine.openInDownload(data.result);这句是异步执行的,IE拦截的就是这种非同步请求导致的文件下载。那解决方法就简单了,让这句同步执行就好
dwr.engine.setAsync(false); //这样callback方法里的语句就同步执行,IE也就认为这个文件下载是用户请求的,也就不拦截了
dwrFunction(vo, fileType, dataList, {
callback : function(data){
dwr.engine.openInDownload(data.result);
},
async : false //也可以用这种方式,方法级别的同步
});
dwr.engine.setAsync(true);
分享到:
相关推荐
dwr和简单的文件上传 说明都在附件里面的 index.jsp里面
dwr异步操作,实现页面和后台代码的一步交互操作
这几天无聊开发了一个程序,需要AJAX要求也不高就使用了DWR,但是程序始终报错,因为以前用过DWR,所以最后才发现是DTD文件路径已经被改变了,这里留下一个以防程序又找不到DTD
dwr操作文件上传下载
学以致用,用以促学,了解一下可用知识对自己的自身有所提高,可以增强自身的开发能力..!
自己写的Quartz例子简单实用。包含所有jar包,部属到tomcat下就可运行。tomcat窗口启动后每10秒调一次execute()。另外还用到了DWR,在jsp中点submit就会发送异步请求回调rollBack方法。简单明了,很适合初学者!
DWR集合Spring实现异步提交,值得下载的内容; 使用Strut 1.2,Hibernate 3.0,Spring 2.5 jar包自己导入
DWR与后台异步交互简单例子,两个JAR包,配置文件dwr.xml/web.xml
DWR经典示例,DWR异步调用,国家与地区连动
ztree+dwr实现的异步加载树形菜单
java web编程中dwr技术所需要的jar包
dwr ajax dwr项目说对应的dwr.xml文件内容
dwr3.0的web.xml的配置文件,该文件是从dwr.jar文件中拷贝出来的
DWR相关文件
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...
利用DWR实现文件上传进度条 利用DWR实现文件上传进度条 利用DWR实现文件上传进度条
dwr实现异步交互所需的jar文件已经对应的xml
DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...
DWR配置文件详解 DWR配置 DWR配置文件
Spring 集成 Dwr 文件上传和文件下载