# 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.