Java 在响应文件下载时重新启用表单提交按钮

Java 在响应文件下载时重新启用表单提交按钮,java,javascript,forms,servlets,download,Java,Javascript,Forms,Servlets,Download,这可能是一个非常简单的问题,但实际上我还没有看到很多关于这个的搜索结果 我在表单中有一个非常基本的submit按钮,它接受一些用户输入,并在服务器的临时目录中生成一个可下载的文件,然后提示用户下载此文件,然后在提交时被此按钮禁用: <form action="Home" method="post" onsubmit="Submit.disabled = true; return true;"> ... <input type="submit" name="Submit" val

这可能是一个非常简单的问题,但实际上我还没有看到很多关于这个的搜索结果

我在表单中有一个非常基本的submit按钮,它接受一些用户输入,并在服务器的临时目录中生成一个可下载的文件,然后提示用户下载此文件,然后在提交时被此按钮禁用:

<form action="Home" method="post" onsubmit="Submit.disabled = true; return true;">
...
<input type="submit" name="Submit" value="Submit" id="Submit" />
在文件准备好下载后,我想重新启用Submit按钮,以便用户可以重新使用他们输入的表单数据(没有进行页面重定向,因为用户基本上只是选择他们正在构建的文件的标准和文件类型,Submit按钮最终将我们带到一个java web连接,该连接连接到一个源,并将各种文件类型构建到用户要下载的服务器的临时目录中)


我在Chrome上玩过,实际上我可以删除submit按钮上的disabled属性,然后用不同的条件再次单击该按钮,并返回不同的结果。我不确定究竟是什么代码可以做到这一点。

在文件下载的响应上设置cookie,让JavaScript每隔一段时间检查cookie。一旦文件下载准备就绪,并且出现了“另存为”对话框,则JavaScript将可以使用cookie。为了确保在同一会话中跨多个浏览器窗口/选项卡正常工作,最好是在JavaScript中生成一个唯一的令牌,将其作为请求参数传递给下载请求,并让servlet将其设置为cookie值

基本上,这应该做到:


...
使用此JavaScript(使用jQuery时,可能有助于减少
document.cookie
verbosity):

功能启动下载(表单){
var token=new Date().getTime();
form.token.value=令牌;
form.Submit.disabled=true;
var pollDownload=setInterval(函数(){
if(document.cookie.indexOf(“download=“+token”)>-1){
document.cookie=“download=“+token+”expires=“+新日期(0)。togmString()+”;path=/;
form.Submit.disabled=false;
clearInterval(下载);
}
}, 500);
}
在servlet中:

// Prepare download here.
// ...

// Once finished preparing, set cookie.
Cookie cookie = new Cookie("download", request.getParameter("token"));
cookie.setPath("/");
response.addCookie(cookie);

// Now stream download to response.
// ...

是什么阻止它在提交时进入下一页?@developerwjk:OP正在提交时提供一个附件(文件下载)。
// Prepare download here.
// ...

// Once finished preparing, set cookie.
Cookie cookie = new Cookie("download", request.getParameter("token"));
cookie.setPath("/");
response.addCookie(cookie);

// Now stream download to response.
// ...