1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.struts2.views.jsp;
19
20 import javax.servlet.http.HttpServletRequest;
21 import javax.servlet.http.HttpServletResponse;
22 import javax.servlet.jsp.JspException;
23
24 import org.apache.struts2.components.Component;
25
26 import com.opensymphony.xwork2.util.ValueStack;
27
28 /***
29 */
30 public abstract class ComponentTagSupport extends StrutsBodyTagSupport {
31 protected Component component;
32
33 public abstract Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res);
34
35 public int doEndTag() throws JspException {
36 component.end(pageContext.getOut(), getBody());
37 component = null;
38 return EVAL_PAGE;
39 }
40
41 public int doStartTag() throws JspException {
42 component = getBean(getStack(), (HttpServletRequest) pageContext.getRequest(), (HttpServletResponse) pageContext.getResponse());
43 populateParams();
44 boolean evalBody = component.start(pageContext.getOut());
45
46 if (evalBody) {
47 return component.usesBody() ? EVAL_BODY_BUFFERED : EVAL_BODY_INCLUDE;
48 } else {
49 return SKIP_BODY;
50 }
51 }
52
53 protected void populateParams() {
54 component.setId(id);
55 }
56
57 public Component getComponent() {
58 return component;
59 }
60 }