1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package examples;
17  
18  import javax.servlet.jsp.*;
19  import javax.servlet.jsp.tagext.*;
20  import java.util.Hashtable;
21  import java.io.Writer;
22  import java.io.IOException;
23  
24  /**
25   * Example1: the simplest tag
26   * Collect attributes and call into some actions
27   *
28   * <foo att1="..." att2="...." att3="...." />
29   */
30  
31  public class FooTag 
32      extends ExampleTagBase 
33  {
34      private String atts[] = new String[3];
35      int i = 0;
36      
37      private final void setAtt(int index, String value) {
38          atts[index] = value;
39      }
40      
41      public void setAtt1(String value) {
42          setAtt(0, value);
43      }
44      
45      public void setAtt2(String value) {
46          setAtt(1, value);
47      }
48  
49      public void setAtt3(String value) {
50          setAtt(2, value);
51      }
52      
53      /**
54       * Process start tag
55       *
56       * @return EVAL_BODY_INCLUDE
57       */
58      public int doStartTag() throws JspException {
59          i = 0;
60  	return EVAL_BODY_TAG;
61      }
62  
63      public void doInitBody() throws JspException {
64          pageContext.setAttribute("member", atts[i]);
65          i++;
66      }
67      
68      public int doAfterBody() throws JspException {
69          try {
70              if (i == 3) {
71                  bodyOut.writeOut(bodyOut.getEnclosingWriter());
72                  return SKIP_BODY;
73              } else
74                  pageContext.setAttribute("member", atts[i]);
75              i++;
76              return EVAL_BODY_TAG;
77          } catch (IOException ex) {
78              throw new JspTagException(ex.toString());
79          }
80      }
81  }
82