Primefaces excel导出不起作用 - 不显示打开/保存对话框

时间:2011-10-11 16:00:38

标签: jsf export primefaces xls mojarra

我正在尝试将dtos集合导出为ex​​cel,并使用这样的primefaces(与primefaces展示演示相同,这是有效的。)

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

我用firebug观察并发出请求,响应看起来像文件内容,但没有弹出文件保存/打开对话框。 我正在使用mojarra 2.1.1和tomcat 6作为app server。

4 个答案:

答案 0 :(得分:11)

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

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

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

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

<h:commandButton value="Export">

答案 1 :(得分:1)

将其封入<h:form>...</h:form>,它会起作用 例如:

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

答案 2 :(得分:0)

如果你使用动态列,Primefaces不支持动态列(动态列我的意思是动态列属性值)。您可以使用POI进行解决方法,但我不知道您到底想要做什么。 向我们展示一些代码。 您使用的是哪种版本的Primefaces?

答案 3 :(得分:-2)

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

第一步是使用dataExporter的preProcessor选项来完成这项工作,但是我知道这样做不是正确的方法(应该用于doc格式设置等),但是我没有找到其他方法要解决此问题(我的情况是仅导出页面数据,而不是呈现dataTable),有人对此有替代方案吗?