码迷,mamicode.com
首页 > 其他好文 > 详细

struts2 文件下载 报错

时间:2014-11-03 01:37:53      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:struts 文件下载 inputname报错

  • 程序错误

学习struts框架时,关于文件下载部分,利用struts中的stream结果类型来实现,配置完成之后,运行程序,报错如下:

HTTP Status 500 - Can not find a java.io.InputStream with the name [downFile] in the invocation stack. Check the <param name="inputName"> tag specified for this action.

  • 错误分析:

1、struts.xml配置文件中关于action部分的配置不对

<action name="downloadfile" class="com.shengsiyuan.struts2.DownloadAction">
    <result name="success" type="stream"> 
    <param name="contentDisposition">attachment;filename="BeginLinuxProgramming.pdf"</param>
    <param name="inputName">downFile</param>
    </result>
<action>

特别注意:inputName中指定的参数对应于Action中的相应的返回InputStream的get方法

public InputStream getDownloadFile(){}

底层的原理是基于struts的valuestack+反射原理自动实现get/set方法。

2、指定文件路径下,不存在指定的文件

3、get方法中返回InputStream的方法不对,方法本身可能返回为null

InputStream is=ServletActionContext.getServletContext().getResourceAsStream("D:\\BeginLinuxProgramming.pdf");

如果使用getServletContext方法,网上的说法是文件必须保存在ServletContext中,千辛万苦实在不知道如何保存到servletContext中,直接改为:

File file = new File("D:\\BeginLinuxProgramming.pdf");
InputStream fileIStream = null;
try {
fileIStream= new FileInputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fileIStream;


struts2 文件下载 报错

标签:struts 文件下载 inputname报错

原文地址:http://mabinmt.blog.51cto.com/3508359/1570907

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!