2011-03-17 45 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