首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tapestry中等待下载准备时显示throbber图像

在Tapestry中等待下载准备时显示throbber图像
EN

Stack Overflow用户
提问于 2014-02-13 13:31:19
回答 2查看 470关注 0票数 0

我的页面上有一个表单,它生成一个很大的PDF文件(最多需要20秒)。是否有方法在创建下载文件时显示一个throbber,并在下载提示出现时隐藏它?

我做了一些检查,最初认为我可以使用渐进式显示,但认为这不是它的目的。

我想我可以附加一个JS函数,当点击“下载”按钮时会触发显示我的throbber,但是当下载窗口出现时,我不太确定如何隐藏它。

在Tapestry有办法做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 13:57:07

更好的解决办法可能是不提交表格。您可以使用javascript来构造GET url并使用iframe。

例:

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2014-02-13 13:52:08

HTTP有一个限制,您不能返回一个包含PDF和一些json的响应。

你能做的是:

  1. 提交表单(其中包含区域参数)
  2. 启动一个生成PDF的异步作业
  3. 立即从提交中返回(在生成PDF之前)
  4. 启动一些javascript,它轮询作业直到它完成。
  5. 工作完成后,通过javascript (document.location.href = /path/to/pdf)下载PDF。

您可以看到轮询异步任务的示例的进度链。您需要将PDF存储在异步任务的某个位置(即会话、数据库或文件系统)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21755729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档