执行struts操作并阻止用户重新处理,直到完成为止

时间:2016-01-26 15:14:53

标签: javascript jquery html

所以我之前发布了一个关于使用控制服务器端导出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的描述。

1 个答案:

答案 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");