0

我发现了一种情况,我想通过导入共享 ActionBean 的输出在许多页面上包含相同的内容。

我想做的是有一个 ActionBean,它接受一些参数并进行一些处理,然后将 ForwardResolution 返回给 JSP,JSP 使用标准 Stripes 构造(如${actionBean.myValue.

然后我想从其他 JSP 中“调用”这个 ActionBean。这会产生将第一个 ActionBean 的输出 HTML 放入第二个 JSP 的输出的效果。

我怎样才能做到这一点?

4

2 回答 2

2

您可以使用<jsp:include>标签获得所需的结果。

SharedContentBean.java

@UrlBinding("/sharedContent")
public class SharedContentBean implements ActionBean {

    String contentParam;

    @DefaultHandler
    public Resolution view() {
        return new ForwardResolution("/sharedContent.jsp");
    }
}

在您的 JSP 中

<!-- Import Registration Form here -->
<jsp:include page="/sharedContent">
    <jsp:param value="myValue" name="contentParam"/>
</jsp:include>

web.xml

确保在 web.xml 中添加INCLUDE到您的<filter-mapping>标签:

<filter-mapping>
    <filter-name>StripesFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <servlet-name>StripesDispatcher</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>
于 2012-08-22T18:55:10.180 回答
1

让您希望包含相同内容的每个 ActionBean 扩展相同的 BaseAction 并将 getter/setter 放入其中。例如:

BaseAction.class

package com.foo.bar;

public class BaseAction implements ActionBean {

  private ActionBeanContext context;

  public ActionBeanContext getContext() { return context; }
  public void setContext(ActionBeanContext context) { this.context = context; }

  public String getSharedString() {
    return "Hello World!";
  }

}

索引.jsp

<html>
  <jsp:useBean id="blah" scope="page" class="com.foo.bar.BaseAction"/>
  <body>
    ${blah.sharedString}
  </body>
</html>
于 2012-08-22T16:47:57.187 回答