FooTag.java
上传用户:bj_pst
上传日期:2019-07-07
资源大小:7353k
文件大小:2k
源码类别:

Java编程

开发平台:

Java

  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements.  See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License.  You may obtain a copy of the License at
  8. *
  9. *     http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package examples;
  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.  * Example1: the simplest tag
  25.  * Collect attributes and call into some actions
  26.  *
  27.  * <foo att1="..." att2="...." att3="...." />
  28.  */
  29. public class FooTag 
  30.     extends ExampleTagBase 
  31. {
  32.     private String atts[] = new String[3];
  33.     int i = 0;
  34.     
  35.     private final void setAtt(int index, String value) {
  36.         atts[index] = value;
  37.     }
  38.     
  39.     public void setAtt1(String value) {
  40.         setAtt(0, value);
  41.     }
  42.     
  43.     public void setAtt2(String value) {
  44.         setAtt(1, value);
  45.     }
  46.     public void setAtt3(String value) {
  47.         setAtt(2, value);
  48.     }
  49.     
  50.     /**
  51.      * Process start tag
  52.      *
  53.      * @return EVAL_BODY_INCLUDE
  54.      */
  55.     public int doStartTag() throws JspException {
  56.         i = 0;
  57. return EVAL_BODY_TAG;
  58.     }
  59.     public void doInitBody() throws JspException {
  60.         pageContext.setAttribute("member", atts[i]);
  61.         i++;
  62.     }
  63.     
  64.     public int doAfterBody() throws JspException {
  65.         try {
  66.             if (i == 3) {
  67.                 bodyOut.writeOut(bodyOut.getEnclosingWriter());
  68.                 return SKIP_BODY;
  69.             } else
  70.                 pageContext.setAttribute("member", atts[i]);
  71.             i++;
  72.             return EVAL_BODY_TAG;
  73.         } catch (IOException ex) {
  74.             throw new JspTagException(ex.toString());
  75.         }
  76.     }
  77. }