1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.views.jsp;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26 import javax.servlet.jsp.JspException;
27
28 import org.apache.struts2.components.Component;
29 import org.apache.struts2.components.IteratorComponent;
30
31 import com.opensymphony.xwork2.util.ValueStack;
32
33 /***
34 * @see IteratorComponent
35 */
36 public class IteratorTag extends ContextBeanTag {
37
38 private static final long serialVersionUID = -1827978135193581901L;
39
40 protected String statusAttr;
41 protected String value;
42
43 public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
44 return new IteratorComponent(stack);
45 }
46
47 protected void populateParams() {
48 super.populateParams();
49
50 IteratorComponent tag = (IteratorComponent) getComponent();
51 tag.setStatus(statusAttr);
52 tag.setValue(value);
53 }
54
55 public void setStatus(String status) {
56 this.statusAttr = status;
57 }
58
59 public void setValue(String value) {
60 this.value = value;
61 }
62
63 public int doEndTag() throws JspException {
64 component = null;
65 return EVAL_PAGE;
66 }
67
68 public int doAfterBody() throws JspException {
69 boolean again = component.end(pageContext.getOut(), getBody());
70
71 if (again) {
72 return EVAL_BODY_AGAIN;
73 } else {
74 if (bodyContent != null) {
75 try {
76 bodyContent.writeOut(bodyContent.getEnclosingWriter());
77 } catch (Exception e) {
78 throw new JspException(e.getMessage());
79 }
80 }
81 return SKIP_BODY;
82 }
83 }
84
85 }