显示pe开始时的状态:导出器并在完成时隐藏状态

时间:2017-02-15 06:55:23

标签: primefaces

Show status on start of p:fileDownload and hide status when it is finished非常相似

但是在这种情况下我有一个数据表需要很长时间才能导出,所以我需要pe:exporter在用户点击导出按钮时显示微调器或状态,并在导出文件时隐藏它发回给客户。

目前我的导出按钮如下所示:

<h:commandLink style="float:right;padding:3px;margin-top:2px;" immediate="true" 
  styleClass="fa fa-file-pdf-o" title="Export to PDF">
  <pe:exporter type="pdf" encoding="iso-8859-1" target="datatable"
    fileName="ExportResult"/>
</h:commandLink>

我有Primefaces 6.0

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。

<h:commandLink style="float:right;padding:3px;margin-top:2px;" immediate="true"           styleClass="fa fa-file-pdf-o" title="Export to PDF"
  onclick="PrimeFaces.monitorDownload(startHandler, endHandler)">
  <pe:exporter type="pdf" encoding="iso-8859-1" target="dataTable"
    fileName="resultadoConsulta"/>
</h:commandLink>

请注意onclick="PrimeFaces.monitorDownload(startHandler, endHandler)"部分。

这是解决方案的第一部分。 startHandler和endHandler是显示和隐藏微调器的javascript函数,就像p:fileDownload showcase中那样。

第二部分是棘手的。我有一个自定义导出器,并在响应中缺少此行:

externalContext.addResponseCookie(Constants.DOWNLOAD_COOKIE, "true", Collections.<String, Object> emptyMap());

这行代码设置了Primefaces的monitorDownload函数所期望的标志。

之后,一切正常!