我发现我希望通过导入共享ActionBean的输出在许多页面上包含相同的内容。
我想要做的是拥有一个ActionBean,它接受一些参数并进行一些处理,然后将一个ForwardResolution返回给JSP,该JSP使用标准的Stripes结构(如${actionBean.myValue
)呈现该ActionBean的输出。
然后我想从其他JSP“调用”这个ActionBean。这会产生将第一个ActionBean的输出HTML放入第二个JSP输出的效果。
我该怎么做?
答案 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>