从servlet下载文件时的错误处理

时间:2012-04-17 14:16:50

标签: ajax servlets error-handling extjs4 download

我有一个必须与IE7一起工作的Web应用程序(是的,我知道..),其中前端完全由ExtJS4制作,并且还有一个用于下载文件的servlet。要下载文件,我发送一些参数,所以我不能简单地使用location.href。它必须是一个POST 到目前为止它可以工作,但是当servlet中抛出一个异常时,我不知道如何处理它以向用户显示一些警告框或一些消息而不重定向到另一个页面。
在我的webapp中我也使用DWR并且我知道openInDownload()函数,但它在IE中触发安全警告。
所以,(最后!)问题是

使用此代码:

post = function (url, params) {
var tempForm=document.createElement("form");
tempForm.action=url;
tempForm.method="POST";
tempForm.style.display="none";
for(var x in params) {
        // ...snip boring stuff to add params
}
document.body.appendChild(tempForm);
tempForm.submit();
return tempForm;
}

提交后是否可以保持同一页面?

或另外一个:

Ext.Ajax.request({
        url: './descargaArchivoNivs', 
        method: 'POST',
        autoAbort: true,
        params: {
            nivs: jsonData
        },
        success: function(response){
        // HERE!!
        // i know this is wrong
            document.write('data:text/plain,' + response.responseText );
        /*    this looked promising but a warning pops up
              var newwindow = window.open();
              newwindow.document.open();
              newwindow.document.write('data:text/plain, ' + response.responseText );
              newwindow.document.close();*/

        },
        failure: function(resp){
            alert('There was an error');
        }
    });  

是否可以使用// HERE!!内容打开文件下载对话框response

还是有其他方法可以在成功时打开文件下载对话框,并且在失败时显示友好消息而不会丢失用户输入(POST的参数)?

(对不起,如果这篇文章太长了)

0 个答案:

没有答案