View Javadoc

    1   /**
    2    *
    3    * Copyright 2003-2004 The Apache Software Foundation
    4    *
    5    *  Licensed under the Apache License, Version 2.0 (the "License");
    6    *  you may not use this file except in compliance with the License.
    7    *  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
    18  //
    19  // This source code implements specifications defined by the Java
    20  // Community Process. In order to remain compliant with the specification
    21  // DO NOT add / change / or delete method signatures!
    22  //
    23
    24  package javax.servlet.jsp.tagext;
    25
    26  import javax.servlet.jsp.JspException;
    27  import javax.servlet.jsp.JspWriter;
    28
    29  /**
    30   * A base class for defining tag handlers implementing BodyTag.
    31   *
    32   * <p>
    33   * The BodyTagSupport class implements the BodyTag interface and adds
    34   * additional convenience methods including getter methods for the
    35   * bodyContent property and methods to get at the previous out JspWriter.
    36   *
    37   * <p>
    38   * Many tag handlers will extend BodyTagSupport and only redefine a
    39   * few methods.
    40   */
    41
    42  public class BodyTagSupport extends TagSupport implements BodyTag {
    43
    44      /**
    45       * Default constructor, all subclasses are required to only define
    46       * a public constructor with the same signature, and to call the
    47       * superclass constructor.
    48       *
    49       * This constructor is called by the code generated by the JSP
    50       * translator.
    51       */
    52
    53      public BodyTagSupport() {
    54  	super();
    55      }
    56
    57      /**
    58       * Default processing of the start tag returning EVAL_BODY_BUFFERED.
    59       *
    60       * @return EVAL_BODY_BUFFERED
    61       * @throws JspException if an error occurred while processing this tag
    62       * @see BodyTag#doStartTag
    63       */
    64
    65      public int doStartTag() throws JspException {
    66          return EVAL_BODY_BUFFERED;
    67      }
    68
    69
    70      /**
    71       * Default processing of the end tag returning EVAL_PAGE.
    72       *
    73       * @return EVAL_PAGE
    74       * @throws JspException if an error occurred while processing this tag
    75       * @see Tag#doEndTag
    76       */
    77
    78      public int doEndTag() throws JspException {
    79  	return super.doEndTag();
    80      }
    81
    82
    83      // Actions related to body evaluation
    84
    85      /**
    86       * Prepare for evaluation of the body: stash the bodyContent away.
    87       *
    88       * @param b the BodyContent
    89       * @see #doAfterBody
    90       * @see #doInitBody()
    91       * @see BodyTag#setBodyContent
    92       */
    93
    94      public void setBodyContent(BodyContent b) {
    95  	this.bodyContent = b;
    96      }
    97
    98
    99      /**
    100      * Prepare for evaluation of the body just before the first body evaluation:
    101      * no action.
    102      *
    103      * @throws JspException if an error occurred while processing this tag
    104      * @see #setBodyContent
    105      * @see #doAfterBody
    106      * @see BodyTag#doInitBody
    107      */
    108
    109     public void doInitBody() throws JspException {
    110     }
    111
    112
    113     /**
    114      * After the body evaluation: do not reevaluate and continue with the page.
    115      * By default nothing is done with the bodyContent data (if any).
    116      *
    117      * @return SKIP_BODY
    118      * @throws JspException if an error occurred while processing this tag
    119      * @see #doInitBody
    120      * @see BodyTag#doAfterBody
    121      */
    122
    123     public int doAfterBody() throws JspException {
    124  	return SKIP_BODY;
    125     }
    126
    127
    128     /**
    129      * Release state.
    130      *
    131      * @see Tag#release
    132      */
    133
    134     public void release() {
    135 	bodyContent = null;
    136
    137 	super.release();
    138     }
    139
    140     /**
    141      * Get current bodyContent.
    142      *
    143      * @return the body _content.
    144      */
    145
    146     public BodyContent getBodyContent() {
    147 	return bodyContent;
    148     }
    149
    150
    151     /**
    152      * Get surrounding out JspWriter.
    153      *
    154      * @return the enclosing JspWriter, from the bodyContent.
    155      */
    156
    157     public JspWriter getPreviousOut() {
    158 	return bodyContent.getEnclosingWriter();
    159     }
    160
    161     // protected fields
    162
    163     /**
    164      * The current BodyContent for this BodyTag.
    165      */
    166     protected BodyContent   bodyContent;
    167 }