3

我正在尝试将 dtos 集合导出到使用这样的 primefaces 的 excel(与 primefaces 展示演示相同,它正在工作)。

<p:commandButton value="Export">
    <p:dataExporter type="xls" target="results" fileName="game_statistics" />
</p:commandButton>

我观察到萤火虫并发出请求,响应也看起来像文件内容,但没有弹出文件保存/打开对话框。我正在使用 mojarra 2.1.1 和 tomcat 6 作为应用服务器。

4

4 回答 4

11

默认情况下<p:commandButton>发送一个ajax请求。您不能使用 ajax 下载文件。Ajax 由 Javascript 执行,但由于安全限制,Javascript 无法强制另存为对话并将 ajax 响应传递给它。

您需要添加ajax="false"到组件:

<p:commandButton value="Export" ajax="false">

或者只是使用常规<h:commandButton>

<h:commandButton value="Export">
于 2011-10-12T12:46:13.747 回答
1

将其包含在<h:form>...</h:form>其中,它将起作用例如:

<h:form>
<p:commandButton value="Export">
    <p:dataExporter type="xls" target="results" fileName="game_statistics" />
</p:commandButton>
</h:form>
于 2017-11-14T10:52:49.420 回答
0

如果您使用动态列,Primefaces 不支持动态列(动态列是指动态列属性值)。您可以使用 POI 作为解决方法,但我不知道您到底想做什么。给我们看一些代码。您使用的是什么版本的 Primefaces?

于 2011-10-12T05:15:08.780 回答
-2

我有一个表单页面,我想使用它的过滤器并在单击 时从托管 bean(jpa 存储库)中提取数据之前应用一些验证commandButton,但它的行为是dataExporter立即导出文件,然后如果我单击我再次得到了正确的结果,因为 bean 在第一次操作时就已经在处理它了......

使用preProcessordataExporter 选项作为第一步可以完成这项工作,但我知道这不是正确的方法(应该用于文档格式等),但我没有找到任何其他方法来解决这个问题(ps 我的情况是仅导出页面数据,不呈现数据表),有没有人有替代/解决方案?

于 2019-12-23T14:42:44.180 回答