我的页面上有一个表单,生成一个大型PDF文件(最多可能需要20秒)。 有没有办法在下载文件创建时显示throbber并在下载提示出现时隐藏它?
我做了一些检查,最初认为我可以使用渐进式显示,但认为这不是它的用途。
我想我可以附加一个JS功能,当单击“下载”按钮时会触发显示我的悸动,但我不确定如何在下载窗口出现时隐藏它。
在Tapestry中有没有办法做到这一点?
答案 0 :(得分:1)
HTTP存在限制,因为您无法返回包含PDF和一些json的单个响应。
你能做的是:
document.location.href = /path/to/pdf
)您可以查看progresslink以获取轮询异步任务的示例。您需要将PDF存储在异步任务(即会话,数据库或文件系统)中。
答案 1 :(得分:1)
可能更好的解决方案是不提交表格。您可以使用javascript构建GET网址并使用iframe。
例如:
<form>
<input id="someText" />
<button onclick="downloadPdf()">Click Me</button>
</form>
<script>
function downloadPdf() {
var url = "/path/to/pdf?someText=" + encodeURIComponent($("#someText").val());
startThrobber();
$('<iframe src="' + url + '" onLoad="stopThrobbber()">').appendTo('body');
}
</script>