Java 在Tapestry中等待下载准备就绪时显示throbber图像
我的页面上有一个表单,可以生成一个大的PDF文件(最多需要20秒)。 有没有一种方法可以在创建下载文件时显示跳动器,并在出现下载提示时将其隐藏 我做了一些检查,最初认为我可以使用渐进式显示,但我认为这不是它的目的 我想我可以附加一个JS函数,当点击“下载”按钮时,它会触发我的心跳,但我不确定在下载窗口出现时如何隐藏它Java 在Tapestry中等待下载准备就绪时显示throbber图像,java,javascript,download,tapestry,throbber,Java,Javascript,Download,Tapestry,Throbber,我的页面上有一个表单,可以生成一个大的PDF文件(最多需要20秒)。 有没有一种方法可以在创建下载文件时显示跳动器,并在出现下载提示时将其隐藏 我做了一些检查,最初认为我可以使用渐进式显示,但我认为这不是它的目的 我想我可以附加一个JS函数,当点击“下载”按钮时,它会触发我的心跳,但我不确定在下载窗口出现时如何隐藏它 在Tapestry中有这样做的方法吗?HTTP有一个限制,即不能返回包含PDF和一些json的单个响应 您可以做的是: 提交表单(具有区域参数) 启动生成PDF的异步作业 提交后立
在Tapestry中有这样做的方法吗?HTTP有一个限制,即不能返回包含PDF和一些json的单个响应 您可以做的是:
document.location.href=/path/to/PDF
)您可以查看轮询异步任务的示例。您需要将PDF存储在异步任务(即会话、数据库或文件系统)的某个位置。更好的解决方案可能是不提交表单。您可以使用javascript构建GET url并使用iframe 例如:
点击我
函数下载PDF(){
var url=“/path/to/pdf?someText=“+encodeURIComponent($(“#someText”).val());
startThrobber();
$('')。附于('正文');
}
这看起来可能有用,但是,我没有PDF文件的实际链接,因为实际文件不存在。必须创建tapestry页面(或组件事件)来生成PDF并链接到它。您可以从页面的onActivate()返回StreamResponse。我不确定是否正确地理解了您的意思。你是说我应该有这样一个组件事件myContextRoot/myPage/customevent:customparam
,并让url指向它吗?我会创建一个页面,在它的onActivate(EventContext)
中生成PDF。您可以通过请求参数或激活上下文将表单值传递给它。您可以通过Componentresources.createPageLink(…)
.Thx获得该页面的URL,我将尝试:)
<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>