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 import org.apache.struts2.components.IteratorComponent;
26
27 import com.opensymphony.xwork2.util.ValueStack;
28
29 /***
30 * @see IteratorComponent
31 */
32 public class IteratorTag extends ComponentTagSupport {
33
34 private static final long serialVersionUID = -1827978135193581901L;
35
36 protected String statusAttr;
37 protected String value;
38
39 public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
40 return new IteratorComponent(stack);
41 }
42
43 protected void populateParams() {
44 super.populateParams();
45
46 IteratorComponent tag = (IteratorComponent) getComponent();
47 tag.setStatus(statusAttr);
48 tag.setValue(value);
49 }
50
51 public void setStatus(String status) {
52 this.statusAttr = status;
53 }
54
55 public void setValue(String value) {
56 this.value = value;
57 }
58
59 public int doEndTag() throws JspException {
60 component = null;
61 return EVAL_PAGE;
62 }
63
64 public int doAfterBody() throws JspException {
65 boolean again = component.end(pageContext.getOut(), getBody());
66
67 if (again) {
68 return EVAL_BODY_AGAIN;
69 } else {
70 if (bodyContent != null) {
71 try {
72 bodyContent.writeOut(bodyContent.getEnclosingWriter());
73 } catch (Exception e) {
74 throw new JspException(e.getMessage());
75 }
76 }
77 return SKIP_BODY;
78 }
79 }
80
81 }