Stripes ActionBeanContext在我尝试调用它的所有页面上返回null。

这是我缩短的ActionBean代码:

package stripesbook.action;
public class InitialInfoActionBean implements ActionBean {
     private ActionBeanContext context;
     public void setContext(ActionBeanContext Context) {
      this.context = Context;
    }
    public ActionBeanContext getContext() {
      return this.context;
    }

    @DefaultHandler
    public Resolution nextPage() throws Exception {
      return new ForwardResolution("/estimate-info.jsp").addParameter("id", id);
    }
}


这是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <description>Perceptive Calculator</description>
  <display-name>Perceptive Calculator</display-name>

  <filter>
    <display-name>Stripes Filter</display-name>
    <filter-name>StripesFilter</filter-name>
    <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
    <init-param>
      <param-name>ActionResolver.Packages</param-name>
      <param-value>stripesbook.action</param-value>
    </init-param>
    <init-param>
      <param-name>ActionBeanContext.Class</param-name>
      <param-value>stripesbook.action.PerceptiveActionBeanContext</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>StripesFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>

  <filter-mapping>
    <filter-name>StripesFilter</filter-name>
    <servlet-name>StripesDispatcher</servlet-name>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>

  <servlet>
    <servlet-name>StripesDispatcher</servlet-name>
    <servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>StripesDispatcher</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>


我没有在我的.jsp页面上做任何事情,除了使用<jsp:useBean id="actionBean" class="stripesbook.action.InitialInfoActionBean" />设置bean并使用${ actionBean.context == null }检查空上下文。

回发到ActionBean时,我可以执行各种操作,但是在大多数情况下,setContext甚至都不会受到攻击。

最佳答案

想通了。代替

<jsp:useBean id="actionBean" class="stripesbook.action.InitialInfoActionBean" />`


我需要使用

<stripes:useActionBean beanclass="stripesbook.action.InitialInfoActionBean" executeResolution="false" event="populate" var="actionBean"  />


显然,常规useBean标记不会填充上下文。

09-15 11:47