struts2实现文件下载,当文件不存在时如何处理(排除返回一个错误页面提示的解决方法外)

时间:2021-03-01 11:31:39
struts2的配置代码如下:
 <action name="attachDownloadAction" class = "documentAction" method="getAttachMentInfo">   
        <result name="success" type="stream"> 
            <param name="contentType">${contentType}</param>
                <param name="inputName">inputStreamAttachment</param> 
                <param name="bufferSize">4096</param> 
        </result> 
        <!--没有查看该附件的权限或已被删除-->   
        <result name=" noresult">
         /common/nosearchresult.jsp
        </result> 
         <result name=" error">/common/error.jsp</result>
   </action> 
当文件不存在,即后台获取到该文件的流为null的时候,
本来是返回/common/nosearchresult.jsp到错误提示页面
可却发现并没有返回到该页面而是在本地机子上多了一个该文件但里面的内容是nosearchresult.jsp页面的html代码。

好像在其他网站上下载,如果路径不存在则会有提示,文件不存在的对话框,请问那是如何处理的?
我同事要我返回一个404错误给他,请问在struts中的Action里或其配置文件里如何返回一个404错误给客户端,这404错误是指返回什么形式?

5 个解决方案

#1


你说的对话框是JS的arlet么?
如果不是的话
那个对话框也是一个错误页面提示
只是把那个页面改成很小的对话框了。。。

#2


不是,我同事是要我后台不要转到一个jsp页面,而是返回什么404错误,我都不太理解

#3


哦,后台这样就可以了:当文件流为null的时候:
this.getResponse().sendError(404);
return null;

#4


引用 3 楼 foamflower 的回复:
哦,后台这样就可以了:当文件流为null的时候: 
this.getResponse().sendError(404); 
return null; 

或者返回一个不存在的路径也可以。

#5


    楼上的值得一试

#1


你说的对话框是JS的arlet么?
如果不是的话
那个对话框也是一个错误页面提示
只是把那个页面改成很小的对话框了。。。

#2


不是,我同事是要我后台不要转到一个jsp页面,而是返回什么404错误,我都不太理解

#3


哦,后台这样就可以了:当文件流为null的时候:
this.getResponse().sendError(404);
return null;

#4


引用 3 楼 foamflower 的回复:
哦,后台这样就可以了:当文件流为null的时候: 
this.getResponse().sendError(404); 
return null; 

或者返回一个不存在的路径也可以。

#5


    楼上的值得一试