2011-03-17 149 views
0

以下是我的动作类无法读取request.getInputStream

import java.io.InputStream; 

import javax.servlet.ServletInputStream; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import com.opensymphony.xwork2.ActionSupport; 

import org.apache.struts2.ServletActionContext; 
import org.apache.struts2.interceptor.ServletRequestAware; 
import org.apache.struts2.interceptor.ServletResponseAware; 

public class AccessRequest extends ActionSupport implements 
        ServletRequestAware,ServletResponseAware { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private HttpServletRequest request; 
     private HttpServletResponse response; 

    /** 
    * @return the response 
    */ 
    public HttpServletResponse getResponse() { 
     return response; 
    } 

    /** 
    * @param response the response to set 
    */ 
    public void setResponse(HttpServletResponse response) { 
     this.response = response; 
    } 

    /** 
    * @return the request 
    */ 
    public HttpServletRequest getRequest() { 
     return request; 
    } 

    /** 
    * @param request the request to set 
    */ 
    public void setRequest(HttpServletRequest request) { 
     this.request = request; 
    } 

    public void setServletRequest(HttpServletRequest request){ 
      this.request = request; 
      } 

      public HttpServletRequest getServletRequest(){ 
      return request; 
      } 

      public void setServletResponse(HttpServletResponse response){ 
      this.response = response; 
      } 

      public HttpServletResponse getServletResponse(){ 
      return response; 
      } 


    public String execute() throws Exception{ 
     request = ServletActionContext.getRequest(); 
     InputStream in = null; 
     ServletInputStream si = request.getInputStream(); 
     System.out.println(si.available());//Getting 0 
     System.out.println(request.getContentLength()); //Getting 938 
     return SUCCESS; 
    } 

} 

我越来越si.available()= 0,其中为request.getContentLength()显示938

支柱为什么不读请求.getInputstream ?????

我,而在Struts2

任何想法Servlet的使用面临同样的问题?请帮助

+1

你已经问过这之前:http://stackoverflow.com/questions/5340621/request-getinputstream-is-null-or-empty请不要重新发布同样的问题再次。如果你觉得答案不适合你,或者你没有得到很好的答案,那么你应该使用'edit'链接来更新/改进你的问题。 – BalusC 2011-03-17 21:11:42

+0

我只在struts中遇到这个问题。在JSF和正常的servlet项目中工作正常 – Lohit 2011-03-17 22:35:28

+0

我有点好奇,知道“request = ServletActionContext.getRequest();”获取什么价值。请检查您是否获取请求NULL。 – 2011-03-18 06:42:53

回答

1

按我的知识

Struts框架中使用的getParameter到的数据填充到表单豆 调用execute方法之前,我们不能使用request.getInputStream

请纠正我,如果它的拨错

+1

有没有其他方法可以做到这一点? – Lohit 2011-03-18 09:08:15