我在我的.vm文件中通过href调用servlet(因为我正在使用前端的速度框架)当请求进入servlet时我正在下载文件。用于下载的文件生成大约需要30秒,因此我想通过弹出窗口指示最终用户。为此我在.vm文件中调用了相同href的函数,该函数打开弹出窗口,指示文件当前正在生成请耐心等待。但是当文件生成和下载完成时我想删除弹出的文件。我是通过servlet上的重定向尝试过的,但是经过Google搜索后我发现我们无法在下载后更改响应状态(link)。
我在我的vm文件中调用javascript函数和servlet,就像这样
<a href="/overriderulehandler?report=1" onClick="return reportResponse()"> Generate Report </a>
overriderulehandler正在调用我的servlet,我正准备在这里下载文件,reportResponse是JS函数,我在其中打开弹出窗口。
请建议我如何完成这项任务。如果有人对此有其他想法,请分享。任何帮助表示赞赏。
答案 0 :(得分:1)
这个onClick处理程序适合我。
onclick="setTimeout(function(){window.location.href='test.html'},100)"
您可以将它放在调用servlet的锚标记中,封装的匿名函数可以调用您喜欢的任何其他函数。 &#39;的test.html&#39;可能是一个页面,上面写着&#34;您的文件正在准备中并将很快下载。
servlet上响应的内容类型应与您推送的文件类型相匹配,以便浏览器知道下载文件而不是尝试打开它。
答案 1 :(得分:0)
我发现在下载后重定向的方法是使用两个不同的html / javascript / JQuery事件处理程序。重定向处理程序即使是Onmousedown也是下载的。因此,在鼠标按下时,js将生成PDF并下载,然后在鼠标向上重定向将执行。感谢上帝的工作......实施起来也很简单。
<a href="#" target="_blank" onmousedown="javascript:createPDF(<?php echo $ID; ?>,'actionName','pageName'); return false;">Create PDF</a>
祝福!