我有一个页面,里面有一个表格,用户可以隐藏和显示可选列。 当用户选择通过表格底部的链接下载表格的内容时,我想向他们发送当前显示列的内容。是否可以使用PrimeFaces RemoteCommand下载文件?
为了做到这一点,我需要使用远程命令,因为常规的commandLink不会接受js参数来告诉服务器哪些列当前正在显示。
我的问题是该文件没有被下载。当我调试时,我得到了我的服务器方法,并完成整个过程,当我返回到浏览器时,我在Chrome的网络标签中看到文件的内容,但文件没有被下载,而是我的页面是正在刷新。如果我在调用命令后将返回值设为false,我会在Chrome的网络选项卡中看到该文件,并且该页面不刷新,但没有任何反应。 我试图使用onSuccess或onComplete事件,但这些似乎并没有像我期望的那样工作。
这可以使用JSF完成,还是必须为此编写一个servlet?
这里是我的代码: 链接
<h:commandLink value="Download data" onclick="invokeDownload();return false;" />
的调用JS方法:
var invokeDownload = function() {
var columnLabels = getVisibleColumns().toString();
downloadTableData([{ "name": "columnLabels", "value": columnLabels }]);
}
远程命令:
<p:remoteCommand name="downloadTableData" action="#{myBean.dataTable.download()}" process="@this"/>
你有什么理由在这里使用一个remoteCommand?我希望这可以通过一个servlet来简化。 –
'p:fileDownload'呢? http://www.primefaces.org/showcase/ui/file/download.xhtml –
@Xtreme,我相信p:fileDownload是针对现有文件的。有没有办法将参数发送到后台方法来构建带有相关数据的文件? – Talbam