我正在尝试将dtos集合导出为excel,并使用这样的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。
答案 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),有人对此有替代方案吗?