【问题标题】:Strategy for p:fileDownload with dialog and loading status带有对话框和加载状态的 p:fileDownload 策略
【发布时间】:2012-02-25 09:25:03
【问题描述】:

p:fileDownload 的策略与加载对话框

我正在尝试在开始下载文件后制作加载栏。我的下载按钮是这样的:

<p:commandButton id="btnFirstType"
            styleClass="bt_princ"
             value="Download File"
             onclick="loading.show()"
             ajax="false">
    <p:fileDownload value="#{mbean.myFile}"/>
</p:commandButton>

<p:dialog modal="true" 
          widgetVar="loading" 
          header="Status"   
          draggable="false" 
          closable="false">  
        <p:graphicImage value="/loading.gif" />  
</p:dialog>

而我的 MBean 是这样的:

public StreamedContent getMyFile(){
     return this.getReport(Type.CSV); //I assure this works, debugged...
}

问题是,点击下载按钮后,如果我启动加载对话框,下载不会发生。 我考虑过使用p:poll 来检查一个布尔变量,以便我知道文件何时生成,所以我可以在单击按钮后显示对话框(比如使用 JavaScript 设置setTimeout),但这可能是我关于如何操作的错误整个事情发生了。还有什么建议吗?

PS1:文件下载后轮询停止,所以不知道什么时候关闭拨号盘

PS2:我使用的是 Primefaces 2.2,无法更新。

PS3:找到 this 解决方法,但“它将”在版本 3 上,所以我不能使用它。

【问题讨论】:

    标签: java javascript jsf-2 primefaces


    【解决方案1】:

    我按照我的问题上发布的解决方法中的建议做了同样的事情。 我从我的版本中下载了 primefaces 源,更改了 FileDownloadActionListener 类,在响应对象中添加了 cookie,在我的页面中,我刚刚使用 setTimeout 启动了一个进程,该进程将每 100 毫秒检查一次 cookie,找到后将其删除。

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 1970-01-01
      • 2016-10-12
      • 2019-01-29
      • 1970-01-01
      • 2011-06-30
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多