使用Stripes,我可以将ActionBean的输出分辨率包含到jsp中吗?

时间:2012-08-22 15:34:29

标签: java jsp jstl stripes

我发现我希望通过导入共享ActionBean的输出在许多页面上包含相同的内容。

我想要做的是拥有一个ActionBean,它接受一些参数并进行一些处理,然后将一个ForwardResolution返回给JSP,该JSP使用标准的Stripes结构(如${actionBean.myValue)呈现该ActionBean的输出。

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

我该怎么做?

2 个答案:

答案 0 :(得分: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

确保将INCLUDE添加到web.xml中的<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>

答案 1 :(得分: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!";
  }

}

<强>的index.jsp

<html>
  <jsp:useBean id="blah" scope="page" class="com.foo.bar.BaseAction"/>
  <body>
    ${blah.sharedString}
  </body>
</html>