我有一些动态生成的文件,我希望我的JSF 2.0应用程序可以为用户下载。我已经能够使用解决方案中的代码来实现这一点:
Forcing a save as dialogue from any web browser from JSF application
和页面上表格中的命令按钮
除了一个故障之外,它的工作正常。我希望能够在初始页面上向用户呈现一条消息,告诉他们正在处理他们的文件并请等待。显然,responseComplete调用会阻止这种情况发生。有没有办法重新呈现提交页面并从同一个按钮发回文件?
答案 0 :(得分:2)
onclick
期间包含消息的内容。但是你会遇到一个问题,即下载完成后你无法隐藏它。
另一种方法是将文件存储在临时磁盘上并返回一个完整的JSF响应,其中显示一个下载链接,该链接通过独立的servlet从临时磁盘返回文件。
答案 1 :(得分:-1)
我认为你可以使用ajax来解决这个问题。从ajax操作调用创建文件的方法,并提供javascript回调来处理导航或显示图层或其他
<script type="text/javascript">
function processEvent(data) {
if (data.status == "begin") {
showWaitingLayer();
} else if (data.status == "success") {
hideWaitingLayer();
showDownloadLink();
}
}
</script>
<h:commandLink action="#{myBean.createDocument}">
<f:ajax onevent="processEvent"/>
</h:commandLink>