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