`
jkam
  • 浏览: 44298 次
  • 性别: Icon_minigender_1
  • 来自: piǎ 县
社区版块
存档分类
最新评论

[DWR]异步请求文件下载被IE的MessageBar拦截的解决办法

    博客分类:
  • DWR
阅读更多

项目的文件下载是用DWR3.0以上版本的文件下载功能实现的,因为它比较灵活,又可以绕过通过定义Servlet来支持文件下载时传值麻烦的问题(避免用Cache)。

dwrengine.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);

 

0
0
分享到:
评论
2 楼 panlantianbluesky 2012-10-23  
太谢谢你了  终于解决了 自己的项目问题
1 楼 fireinjava 2010-11-02  
学习了,感谢啊!

相关推荐

    Dwr异步刷新事例,可以参考一下!

    1. **配置DWR**:在服务器端,我们需要在`dwr.xml`配置文件中声明可被远程调用的Java类和方法。 2. **创建Java接口**:定义一个Java接口,包含需要被客户端调用的方法。这些方法应该没有副作用,因为它们可能在任何...

    dwr和简单的文件上传

    这通常包括创建一个`dwr.xml`配置文件,其中定义了哪些Java类和方法可以被JavaScript调用。例如,你可以定义一个处理文件上传的类,如`FileUploadService`,并在其中声明一个接收文件的`uploadFile`方法。 ```xml ...

    dwr操作文件上传下载

    - 使用DWR的`util.uploadFile()`方法,该方法会触发一个异步的文件上传请求到服务器。 - 服务器端接收文件,通常会使用Servlet或者Controller来处理上传请求,保存文件到指定位置。 3. **文件下载** 文件下载则...

    dwr异步操作

    DWR(Direct Web Remoting)是一种Java技术,用于在Web应用程序中实现实时的、无需刷新页面的异步客户端和服务器端通信。它允许JavaScript在浏览器端直接调用服务器端的Java方法,使得Web应用可以像桌面应用一样具有...

    dwr的DTD文件下载

    这几天无聊开发了一个程序,需要AJAX要求也不高就使用了DWR,但是程序始终报错,因为以前用过DWR,所以最后才发现是DTD文件路径已经被改变了,这里留下一个以防程序又找不到DTD

    DWR集合Spring实现异步提交

    在DWR异步提交的场景中,Struts可以用来接收和处理DWR发起的请求,并调用业务逻辑层。 2. **Hibernate 3.0**:作为ORM框架,Hibernate负责将Java对象映射到数据库表,简化数据操作。在Spring中,我们可以使用`...

    web编程异步刷新dwr技术jar包

    3. **安全性**:DWR提供了安全机制,如CSRF(Cross-site request forgery)防护,确保只有授权的请求才能被处理。 4. **调试支持**:DWR提供了一个控制台,帮助开发者在浏览器端调试远程调用,查看请求和响应详情。...

    DWR与后台异步交互简单例子

    2. **web.xml**:这是标准的Servlet容器配置文件,在这里我们需要配置DWR的Servlet,以便服务器知道如何处理DWR请求。通常,我们需要添加一个名为`DWRServlet`的Servlet映射,指定其URL模式以及初始化参数,如DWR的...

    自己写的Quartz+dwr发异步请求的例子简单实用

    自己写的Quartz例子简单实用。包含所有jar包,部属到tomcat下就可运行。tomcat窗口启动后每10秒调一次execute()。另外还用到了DWR,在jsp中点submit就会发送异步请求回调rollBack方法。简单明了,很适合初学者!

    dwr实现异步交互所需的jar文件

    这个XML文件是DWR的核心配置,用于定义哪些Java类和方法可以被客户端JavaScript访问,以及如何进行安全控制。通过`dwr.xml`,你可以设置安全性限制,比如允许的IP范围、会话超时和白名单等。同时,你还可以配置转换...

    ztree+dwr实现的异步加载树形菜单

    4. **异步加载数据**:当用户展开树形菜单的某个节点时,ZTree会自动触发异步请求,调用DWR中的后台方法获取子节点数据。后台处理完毕后,将结果返回给前端。 5. **接收并渲染数据**:前端接收到数据后,ZTree会...

    Dwr+进度条上传文件(支持多文件)

    标题 "Dwr+进度条上传文件(支持多文件)" 指的是使用Direct Web Remoting (DWR) 技术实现的文件上传功能,并且具备显示进度条以及支持同时上传多个文件的能力。DWR是一种在浏览器和服务器之间进行异步通信的...

    Strues2-Dwr 带进度条文件上传

    Struts2-DWR带进度条文件上传是一种在Web应用程序中实现大文件上传并显示实时进度条的技术组合。Struts2是一个流行的Java MVC框架,用于构建企业级Web应用,而DWR(Direct Web Remoting)是一个JavaScript库,允许在...

    DWR异步调用实现的国家与地区的连动

    在这个文件中,我们可以看到HTML结构、JavaScript代码以及可能的CSS样式,用于展示DWR异步调用的实际应用。 总的来说,DWR异步调用使得动态更新国家和地区联动变得更加简单和高效。通过这个示例,开发者可以学习到...

    用dwr做的上传下载

    总的来说,DWR为文件上传下载提供了一个高效且用户友好的解决方案。它简化了前后端通信,使开发者能够专注于业务逻辑,而不需要关心底层网络细节。然而,需要注意的是,由于文件上传可能涉及大量数据,因此在实际...

    dwr.xml文件

    ### dwr.xml 文件知识点解析 #### 一、DWR(Direct Web Remoting)简介 DWR(Direct Web Remoting)是一种简化Ajax应用开发的技术。它允许JavaScript直接调用服务器端的Java方法,使得开发者能够更加方便地进行...

    dwr配置文件详解 dwr.xml配置文件详解

    dwr配置文件详解 dwr.xml配置文件详解 dwr配置文件是Direct Web Remoting(DWR)的核心组件之一,它负责配置DWR的各种设置和参数。在本文中,我们将详细介绍dwr配置文件的结构和配置方法,并探讨它在实际应用中的...

    DWR相关文件

    在压缩包中的“dwr”文件可能包含了DWR库的各个组成部分,如jar文件(包含DWR的实现代码)、配置文件(如dwr.xml,用于配置DWR的行为)、示例代码或者文档等。使用这些文件,开发者可以设置和运行自己的DWR应用,...

    DWR3.0 全部文件

    4. **配置文件示例**:在DWR3.0中,配置文件(如dwr.xml)用于定义哪些Java类和方法可以被JavaScript访问。配置文件示例将展示如何设置安全策略,以及如何为特定应用定制DWR的行为。 5. **Javadoc**:Javadoc是Java...

Global site tag (gtag.js) - Google Analytics