所以我之前发布了一个关于使用控制服务器端导出excel文件的问题,以防止用户调用该操作(Action method to export excel and prevent user from reprocessing the action till complete)! 一个fellah建议使用Execute和Wait Interceptor(Struts),这是一个非常好的方法来处理背景中的长处理!
但是,问题是我需要留在我导出的页面上,以便用户可以与它进行交互(他只是在导出完成之前无法导出):
所以我发现了一个解决方案来做客户端:
function handler() {
$("#searchForm_exportExcelMdt").attr("disabled", false);
}
// export excel
function exportExcel() {
console.log("toto is exporting ..");
$("#searchForm_exportExcelMdt").attr("disabled", true);
$.ajax({
method : "GET",
url : "/myApp/view/mandat/recherche/doNothing.action",
traditional : true,
success : function(data) {
$(location).load('exportExcelMdt.action',handler).attr('href','exportExcelMdt.action');
}
});
}
所以这基本上会禁用按钮,调用只返回成功的动作“doNothing()”。然后在重新激活按钮的处理程序之前调用exportExcelMdt(导出文件)操作,最后我会调用当前页面(类似于刷新)以强制下载文件(不确定但没有文件没有文件)生成)。
所以这适用于Chrome,IE但不适用于Firefox !!!! :'(
即使错误未显示在控制台中,我也只是重定向到我的错误页面。
如果有人知道这是什么原因或者如何停用Firefox的输入会非常有用!
PS:你可以在上一个帖子的链接上找到JSP,Struts.xml,Action的描述。
答案 0 :(得分:0)
而不是
$("#searchForm_exportExcelMdt").attr("disabled", true);
和
$("#searchForm_exportExcelMdt").attr("disabled", false);
使用
// Use disabled string as attribute instead of true
$("#searchForm_exportExcelMdt").attr("disabled", "disabled");
和
// remove attribute instead of set it to false
$("#searchForm_exportExcelMdt").removeAttr("disabled");