这是 action
public class DownloadAction extends ActionSupport{
private String nameXXXX;
private String XXXX;
get/set
public String getDownloadType(){
String type=nameXXXX.substring(nameXXXX.indexOf(".")+1);
if(type.equals("avi")){
return "video/x-msvideo";//从tomcat中得到的
}
else{
return null;
}
}
public String getDownloadDisposition(){
XMLClass x=new XMLClass();
List list=x.ShowInMonitor(XXXX,nameXXXX);
String Yaddress=(String)list.get(1);//这3行为得到文件名
String name="filename=\""+Yaddress+"\"";
System.out.println(name);
return name;
}
public InputStream getDownloadFile(){
XMLClass x=new XMLClass();
List list=x.ShowInMonitor(XXXX,nameXXXX);
String Yaddress=(String)list.get(1);//得到文件名
return ServletActionContext.getServletContext().getResourceAsStream("/upload/"+Yaddress);
} @Override
public String execute() throws Exception {
System.out.println("AAAAAAAAAAAAAAAAAAASSSSSSSSSSSSSSSSSSSSSSSSDDDDDDDDDDDDDD");
return "success";
}
}这是struts.xml
<action name="Download" class="action.DownloadAction">
<result name="success" type="stream">
<param name="contentType">downloadType</param>
<param name="contentDisposition">downloadDisposition</param>
<param name="inputName">downloadFile</param>
</result>
</action>这是jsp
<s:a href="Download.action?XXXX=Schoolteachingview&nameXXXX=<%=name%>">下载</s:a>
问号后传的值是为了求出文件名称的运行后出现错误
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:189)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
public class DownloadAction extends ActionSupport{
private String nameXXXX;
private String XXXX;
get/set
public String getDownloadType(){
String type=nameXXXX.substring(nameXXXX.indexOf(".")+1);
if(type.equals("avi")){
return "video/x-msvideo";//从tomcat中得到的
}
else{
return null;
}
}
public String getDownloadDisposition(){
XMLClass x=new XMLClass();
List list=x.ShowInMonitor(XXXX,nameXXXX);
String Yaddress=(String)list.get(1);//这3行为得到文件名
String name="filename=\""+Yaddress+"\"";
System.out.println(name);
return name;
}
public InputStream getDownloadFile(){
XMLClass x=new XMLClass();
List list=x.ShowInMonitor(XXXX,nameXXXX);
String Yaddress=(String)list.get(1);//得到文件名
return ServletActionContext.getServletContext().getResourceAsStream("/upload/"+Yaddress);
} @Override
public String execute() throws Exception {
System.out.println("AAAAAAAAAAAAAAAAAAASSSSSSSSSSSSSSSSSSSSSSSSDDDDDDDDDDDDDD");
return "success";
}
}这是struts.xml
<action name="Download" class="action.DownloadAction">
<result name="success" type="stream">
<param name="contentType">downloadType</param>
<param name="contentDisposition">downloadDisposition</param>
<param name="inputName">downloadFile</param>
</result>
</action>这是jsp
<s:a href="Download.action?XXXX=Schoolteachingview&nameXXXX=<%=name%>">下载</s:a>
问号后传的值是为了求出文件名称的运行后出现错误
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:189)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
解决方案 »
- 一起玩zk
- 请教大家一个通过反编译android代码的还原
- weblogic 编码问题 请教
- spring 与hibernate 整合的问题 请帮忙
- 怎样把jsp页面的数据excel导出
- 如何判断表单提交action里的数据没有丢失
- 大家帮帮我谢谢了..关于J2EE和PetStore和WebLogic的问题...
- 问一个easy struts的配置问题,为什么在windows---->preference中添加了struts的jar包,在向导中仍然不能import到struts的包?
- 用POI生成excel文档,sheet名不能显示中文,请赐教
- 在www.java.sun.com网站down下来的j2ee tutorail,提到How to Build and Run the Examples,里面有不明的地方,请帮帮忙,谢谢!!!
- 赚点生活费
- JS中如何根据日期查询是星期几
引用Struts的标签是否不需要.action后缀?试下改成:<s:a href="Download?XXXX=Schoolteachingview&nameXXXX= <%=name%>">
HTTP Status 404 - /ClassL/pages/Download
是这一行的错误在你相应的目录下,有你要下载的文件么?或者文件名错了,比如说扩展名没对,你在系统内将扩展名隐藏了,
使得你得到错误的文件名
这行
<s:a href="Download.action?XXXX=Schoolteachingview&nameXXXX= <%=name%>">
的nameXXXX没在action里取到值
这是为什么
action里已经有get/set方法了 而且XXXX的值能取到!