# Class BodyTagSupport

java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
jakarta.servlet.jsp.tagext.BodyTagSupport

All Implemented Interfaces:
  `BodyTag, IterationTag, JspTag, Tag, Serializable`

public class BodyTagSupport extends TagSupport implements BodyTag
A base class for defining tag handlers implementing BodyTag.

The BodyTagSupport class implements the BodyTag interface and adds additional convenience methods including getter methods for the bodyContent property and methods to get at the previous out JspWriter.

Many tag handlers will extend BodyTagSupport and only redefine a few methods.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected BodyContent`
  `bodyContent`
  The current BodyContent for this BodyTag.

  ### Fields inherited from class TagSupport

  `id, pageContext`

  ### Fields inherited from interface BodyTag

  `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

  ### Fields inherited from interface IterationTag

  `EVAL_BODY_AGAIN`

  ### Fields inherited from interface Tag

  `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BodyTagSupport()`
  Default constructor, all subclasses are required to only define a public constructor with the same signature, and to call the superclass constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `doAfterBody()`
  After the body evaluation: do not reevaluate and continue with the page.
  `int`
  `doEndTag()`
  Default processing of the end tag returning EVAL_PAGE.
  `void`
  `doInitBody()`
  Prepare for evaluation of the body just before the first body evaluation: no action.
  `int`
  `doStartTag()`
  Default processing of the start tag returning EVAL_BODY_BUFFERED.
  `BodyContent`
  `getBodyContent()`
  Get current bodyContent.
  `JspWriter`
  `getPreviousOut()`
  Get surrounding out JspWriter.
  `void`
  `release()`
  Release state.
  `void`
  `setBodyContent(BodyContent b)`
  Prepare for evaluation of the body: stash the bodyContent away.

  ### Methods inherited from class TagSupport

  `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Tag

  `getParent, setPageContext, setParent`

- ## Field Details

  - ### bodyContent

    protected transient BodyContent bodyContent
    The current BodyContent for this BodyTag.

- ## Constructor Details

  - ### BodyTagSupport

    public BodyTagSupport()
    Default constructor, all subclasses are required to only define a public constructor with the same signature, and to call the superclass constructor. This constructor is called by the code generated by the JSP translator.

- ## Method Details

  - ### doStartTag

    public int doStartTag() throws JspException
    Default processing of the start tag returning EVAL_BODY_BUFFERED.
    Specified by:
      `doStartTag` in interface `Tag`
    Overrides:
      `doStartTag` in class `TagSupport`
    Returns:
      EVAL_BODY_BUFFERED
    Throws:
      `JspException` - if an error occurred while processing this tag
    See Also:
      - `Tag.doStartTag()`

  - ### doEndTag

    public int doEndTag() throws JspException
    Default processing of the end tag returning EVAL_PAGE.
    Specified by:
      `doEndTag` in interface `Tag`
    Overrides:
      `doEndTag` in class `TagSupport`
    Returns:
      EVAL_PAGE
    Throws:
      `JspException` - if an error occurred while processing this tag
    See Also:
      - `Tag.doEndTag()`

  - ### setBodyContent

    public void setBodyContent(BodyContent b)
    Prepare for evaluation of the body: stash the bodyContent away.
    Specified by:
      `setBodyContent` in interface `BodyTag`
    Parameters:
      `b` - the BodyContent
    See Also:
      - `doAfterBody()`
      - `doInitBody()`
      - `BodyTag.setBodyContent(BodyContent)`

  - ### doInitBody

    public void doInitBody() throws JspException
    Prepare for evaluation of the body just before the first body evaluation: no action.
    Specified by:
      `doInitBody` in interface `BodyTag`
    Throws:
      `JspException` - if an error occurred while processing this tag
    See Also:
      - `setBodyContent(BodyContent)`
      - `doAfterBody()`
      - `BodyTag.doInitBody()`

  - ### doAfterBody

    public int doAfterBody() throws JspException
    After the body evaluation: do not reevaluate and continue with the page. By default nothing is done with the bodyContent data (if any).
    Specified by:
      `doAfterBody` in interface `IterationTag`
    Overrides:
      `doAfterBody` in class `TagSupport`
    Returns:
      SKIP_BODY
    Throws:
      `JspException` - if an error occurred while processing this tag
    See Also:
      - `doInitBody()`
      - `IterationTag.doAfterBody()`

  - ### release

    public void release()
    Release state.
    Specified by:
      `release` in interface `Tag`
    Overrides:
      `release` in class `TagSupport`
    See Also:
      - `Tag.release()`

  - ### getBodyContent

    public BodyContent getBodyContent()
    Get current bodyContent.
    Returns:
      the body content.

  - ### getPreviousOut

    public JspWriter getPreviousOut()
    Get surrounding out JspWriter.
    Returns:
      the enclosing JspWriter, from the bodyContent.