我发现了一种情况,我想通过导入共享 ActionBean 的输出在许多页面上包含相同的内容。
我想做的是有一个 ActionBean,它接受一些参数并进行一些处理,然后将 ForwardResolution 返回给 JSP,JSP 使用标准 Stripes 构造(如${actionBean.myValue
.
然后我想从其他 JSP 中“调用”这个 ActionBean。这会产生将第一个 ActionBean 的输出 HTML 放入第二个 JSP 的输出的效果。
我怎样才能做到这一点?
您可以使用<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>
让您希望包含相同内容的每个 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>