ActionContext ctxt=ActionContext.getContext();
 Object ob=ctxt.get(ServletActionContext. HTTP_REQUEST ); 
 HttpServletRequest request= (HttpServletRequest)ob;请问各位大侠,在执行上面几句代码时,第一句没问题,执行第二句,就抛出以下错误:exception javax.servlet.ServletException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
root cause java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
         。。
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)我用的是eclipse 3.1,myeclipse插件为4.0,服务器用的是tomcat5,JDK5
struts2的那几个核心包都导入进去了,觉得环境配置应该没什么问题啊
不会是eclipse和tomcat的版本太低 不兼容struts2吧?找了很久原因,都没找着,恳请各位大虾帮助了,谢谢!

解决方案 »

  1.   

    ServletActionContext.getRequest(); 去取request试试
      

  2.   

    ActionContext ctxt=ActionContext.getContext();
    HttpServletRequest request = (HttpServletRequest) ctxt.get(ServletActionContext.HTTP_REQUEST); 
      

  3.   

    直接ServletActionContext.getRequest();就行了。
    费劲!!!!!!
      

  4.   

    ServletActionContextServletActionContext(com.opensymphony.webwork. ServletActionContext),这个类直接继承了我们上面介绍的ActionContext,它提供了直接与JavaServlet相关对象访问的功能,它可以取得的对象有:1、javax.servlet.http.HttpServletRequest:HTTPservlet请求对象2、javax.servlet.http.HttpServletResponse;:HTTPservlet相应对象3、javax.servlet.ServletContext:Servlet 上下文信息4、javax.servlet.ServletConfig:Servlet配置对象5、javax.servlet.jsp.PageContext:Http页面上下文ServletActionContext除了提供了上面这些对象访问,它当然也继承了它父类ActionContex的很多功能,比如:对OgnlValueStack、Action名字等的访问。下面我们看看几个简单的例子,让我们了解如何从ServletActionContext里取得JavaServlet的相关对象:1、取得HttpServletRequest对象:HttpServletRequest request = ServletActionContext. getRequest();2、取得HttpSession对象:HttpSession session = ServletActionContext. getRequest().getSession();
      

  5.   

    ServletActionContext.getRequest();
    简单事被你弄的这么复杂
      

  6.   

    4喽提供的方法很全啊  你可以下载一个struts2的帮助文档看看 这个用的多了就熟悉了
      

  7.   


    struts2获取HttpServletRequest有三种方法。最简单的是:HttpServletRequest request = ServletActionContext.getRequest();其余两种是:
    1、Map requestMap = (Map)ActionContext.getContext().get("request");2、需要implements RequestAware
    Map<String,Object> requestMap;
    public void setRequest(Map<String, Object> request) {
    this.requestMap = request;
    }
      

  8.   

    建议打开struts 文档参考下。
      

  9.   

    谢谢各位了
    代码还是
    ActionContext ctxt=ActionContext.getContext();
    HttpServletRequest request= (HttpServletRequest)ctxt.get(ServletActionContext.HTTP_REQUEST );我换了个开发环境 myeclipse6.6 + tomcat6 + jdk1.5现在就没问题了是不是低版本的eclipse和tomcat对struts2兼容不太好啊