struts2 文件动态下载问题
如上文件下载出现以下异常
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)
怎么会说找不到inputSteam的名字呢?<param name="inputName">downloadFile</param>
这个配置没问题啊,前两天还好好的,怎么今天下载又出现这个异常了,以下是我的代码请各位校正!!!
从数据库中查出要下载的文件名,通过URL超链接过去,传入下载的文件名参数
附件下载: <a href=download.action?name=<%=fname %>><%=fname1 %></a>(这些都没问题)
<%
					CaseAttach caseatt =(CaseAttach) request.getAttribute("caseattach");
					if(caseatt!=null)
					{
					String fname1 = caseatt.getName();
					//System.out.println("===="+fname);
					String fname = java.net.URLEncoder.encode(fname1, "UTF-8");  
					 //System.out.println("===="+fname);
					%>
	                 <td>附件下载: <a href=download.action?name=<%=fname %>><%=fname1 %></a></td>
以下是action的处理
package com.goodstart.oa.casemanager.action;
import java.io.InputStream;
import 
java.io.UnsupportedEncodingException;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class TcaseDownloadAction extends ActionSupport{
     private static final long serialVersionUID = 6329383258366253255L;      
	//该属性是依赖注入的属性,可以在配置文件中动态指定该属性值
	private String fileName;	
     public void setFileName(){  
         //得到请求下载的文件名  
         String fname=ServletActionContext.getRequest().getParameter("name");   
         try {  
         /*  
          * 对fname参数进行UTF-8解码,注意:实际进行UTF-8解码时会使用本地编码,本机为GBK。  
          * 这里使用request.setCharacterEncoding解码无效.  
          * 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件  
          * */    
               fname = new String(fname.getBytes("ISO-8859-1"), "UTF-8");    
       } catch (Exception e) {  
             e.printStackTrace();  
        }    
        this.fileName=fname;    
        System.out.println("set------"+this.fileName); 这里打印都可以得到正确的文件名  
    }  		   
     /*  
      * @getFileName  
      * 此方法对应的是struts.xml文件中的:  
      * <param name="contentDisposition">attachment;file