<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>BodyTag</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="BodyTag";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/servlet/jsp/tagext/BodyContent.html" title="class in jakarta.servlet.jsp.tagext"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../jakarta/servlet/jsp/tagext/BodyTagSupport.html" title="class in jakarta.servlet.jsp.tagext"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/servlet/jsp/tagext/BodyTag.html" target="_top">Frames</a></li>
<li><a href="BodyTag.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.servlet.jsp.tagext</div>
<h2 title="Interface BodyTag" class="title">Interface BodyTag</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html" title="interface in jakarta.servlet.jsp.tagext">IterationTag</a>, <a href="../../../../jakarta/servlet/jsp/tagext/JspTag.html" title="interface in jakarta.servlet.jsp.tagext">JspTag</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html" title="interface in jakarta.servlet.jsp.tagext">Tag</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../jakarta/servlet/jsp/tagext/BodyTagSupport.html" title="class in jakarta.servlet.jsp.tagext">BodyTagSupport</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">BodyTag</span>
extends <a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html" title="interface in jakarta.servlet.jsp.tagext">IterationTag</a></pre>
<div class="block">The BodyTag interface extends IterationTag by defining additional methods that let a tag handler manipulate the
 content of evaluating its body.

 <p>
 It is the responsibility of the tag handler to manipulate the body content. For example the tag handler may take the
 body content, convert it into a String using the bodyContent.getString method and then use it. Or the tag handler may
 take the body content and write it out into its enclosing JspWriter using the bodyContent.writeOut method.

 <p>
 A tag handler that implements BodyTag is treated as one that implements IterationTag, except that the doStartTag
 method can return SKIP_BODY, EVAL_BODY_INCLUDE or EVAL_BODY_BUFFERED.

 <p>
 If EVAL_BODY_INCLUDE is returned, then evaluation happens as in IterationTag.

 <p>
 If EVAL_BODY_BUFFERED is returned, then a BodyContent object will be created (by code generated by the JSP compiler)
 to capture the body evaluation. The code generated by the JSP compiler obtains the BodyContent object by calling the
 pushBody method of the current pageContext, which additionally has the effect of saving the previous out value. The
 page compiler returns this object by calling the popBody method of the PageContext class; the call also restores the
 value of out.

 <p>
 The interface provides one new property with a setter method and one new action method.

 <p>
 <B>Properties</B>
 <p>
 There is a new property: bodyContent, to contain the BodyContent object, where the JSP Page implementation object
 will place the evaluation (and reevaluation, if appropriate) of the body. The setter method (setBodyContent) will
 only be invoked if doStartTag() returns EVAL_BODY_BUFFERED and the corresponding action element does not have an
 empty body.

 <p>
 <B>Methods</B>
 <p>
 In addition to the setter method for the bodyContent property, there is a new action method: doInitBody(), which is
 invoked right after setBodyContent() and before the body evaluation. This method is only invoked if doStartTag()
 returns EVAL_BODY_BUFFERED.

 <p>
 <B>Lifecycle</B>
 <p>
 Lifecycle details are described by the transition diagram below. Exceptions that are thrown during the computation of
 doStartTag(), setBodyContent(), doInitBody(), BODY, doAfterBody() interrupt the execution sequence and are propagated
 up the stack, unless the tag handler implements the TryCatchFinally interface; see that interface for details.
 <p>
 <IMG src="doc-files/BodyTagProtocol.gif" alt="Lifecycle Details Transition Diagram for BodyTag">

 <p>
 <B>Empty and Non-Empty Action</B>
 <p>
 If the TagLibraryDescriptor file indicates that the action must always have an empty element body, by an
 &lt;body-content&gt; entry of "empty", then the doStartTag() method must return SKIP_BODY. Otherwise, the
 doStartTag() method may return SKIP_BODY, EVAL_BODY_INCLUDE, or EVAL_BODY_BUFFERED.

 <p>
 Note that which methods are invoked after the doStartTag() depends on both the return value and on if the custom
 action element is empty or not in the JSP page, not how it's declared in the TLD.

 <p>
 If SKIP_BODY is returned the body is not evaluated, and doEndTag() is invoked.

 <p>
 If EVAL_BODY_INCLUDE is returned, and the custom action element is not empty, setBodyContent() is not invoked,
 doInitBody() is not invoked, the body is evaluated and "passed through" to the current out, doAfterBody() is invoked
 and then, after zero or more iterations, doEndTag() is invoked. If the custom action element is empty, only doStart()
 and doEndTag() are invoked.

 <p>
 If EVAL_BODY_BUFFERED is returned, and the custom action element is not empty, setBodyContent() is invoked,
 doInitBody() is invoked, the body is evaluated, doAfterBody() is invoked, and then, after zero or more iterations,
 doEndTag() is invoked. If the custom action element is empty, only doStart() and doEndTag() are invoked.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/BodyTag.html#EVAL_BODY_BUFFERED">EVAL_BODY_BUFFERED</a></span></code>
<div class="block">Request the creation of new buffer, a BodyContent on which to evaluate the body of this tag.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/BodyTag.html#EVAL_BODY_TAG">EVAL_BODY_TAG</a></span></code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">As of Java JSP API 1.2, use BodyTag.EVAL_BODY_BUFFERED or IterationTag.EVAL_BODY_AGAIN.</span></div>
</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.jakarta.servlet.jsp.tagext.IterationTag">
<!--   -->
</a>
<h3>Fields inherited from interface&nbsp;jakarta.servlet.jsp.tagext.<a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html" title="interface in jakarta.servlet.jsp.tagext">IterationTag</a></h3>
<code><a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html#EVAL_BODY_AGAIN">EVAL_BODY_AGAIN</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.jakarta.servlet.jsp.tagext.Tag">
<!--   -->
</a>
<h3>Fields inherited from interface&nbsp;jakarta.servlet.jsp.tagext.<a href="../../../../jakarta/servlet/jsp/tagext/Tag.html" title="interface in jakarta.servlet.jsp.tagext">Tag</a></h3>
<code><a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#EVAL_BODY_INCLUDE">EVAL_BODY_INCLUDE</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#EVAL_PAGE">EVAL_PAGE</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#SKIP_BODY">SKIP_BODY</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#SKIP_PAGE">SKIP_PAGE</a></code></li>
</ul>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/BodyTag.html#doInitBody--">doInitBody</a></span>()</code>
<div class="block">Prepare for evaluation of the body.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/BodyTag.html#setBodyContent-jakarta.servlet.jsp.tagext.BodyContent-">setBodyContent</a></span>(<a href="../../../../jakarta/servlet/jsp/tagext/BodyContent.html" title="class in jakarta.servlet.jsp.tagext">BodyContent</a>&nbsp;b)</code>
<div class="block">Set the bodyContent property.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.jakarta.servlet.jsp.tagext.IterationTag">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;jakarta.servlet.jsp.tagext.<a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html" title="interface in jakarta.servlet.jsp.tagext">IterationTag</a></h3>
<code><a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html#doAfterBody--">doAfterBody</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.jakarta.servlet.jsp.tagext.Tag">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;jakarta.servlet.jsp.tagext.<a href="../../../../jakarta/servlet/jsp/tagext/Tag.html" title="interface in jakarta.servlet.jsp.tagext">Tag</a></h3>
<code><a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#doEndTag--">doEndTag</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#doStartTag--">doStartTag</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#getParent--">getParent</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#release--">release</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#setPageContext-jakarta.servlet.jsp.PageContext-">setPageContext</a>, <a href="../../../../jakarta/servlet/jsp/tagext/Tag.html#setParent-jakarta.servlet.jsp.tagext.Tag-">setParent</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="EVAL_BODY_TAG">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EVAL_BODY_TAG</h4>
<pre>@Deprecated
static final&nbsp;int EVAL_BODY_TAG</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of Java JSP API 1.2, use BodyTag.EVAL_BODY_BUFFERED or IterationTag.EVAL_BODY_AGAIN.</span></div>
<div class="block">Deprecated constant that has the same value as EVAL_BODY_BUFFERED and EVAL_BODY_AGAIN. This name has been marked
 as deprecated to encourage the use of the two different terms, which are much more descriptive.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#jakarta.servlet.jsp.tagext.BodyTag.EVAL_BODY_TAG">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="EVAL_BODY_BUFFERED">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>EVAL_BODY_BUFFERED</h4>
<pre>static final&nbsp;int EVAL_BODY_BUFFERED</pre>
<div class="block">Request the creation of new buffer, a BodyContent on which to evaluate the body of this tag.

 Returned from doStartTag when it implements BodyTag. This is an illegal return value for doStartTag when the
 class does not implement BodyTag.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#jakarta.servlet.jsp.tagext.BodyTag.EVAL_BODY_BUFFERED">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="setBodyContent-jakarta.servlet.jsp.tagext.BodyContent-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBodyContent</h4>
<pre>void&nbsp;setBodyContent(<a href="../../../../jakarta/servlet/jsp/tagext/BodyContent.html" title="class in jakarta.servlet.jsp.tagext">BodyContent</a>&nbsp;b)</pre>
<div class="block">Set the bodyContent property. This method is invoked by the JSP page implementation object at most once per
 action invocation. This method will be invoked before doInitBody. This method will not be invoked for empty tags
 or for non-empty tags whose doStartTag() method returns SKIP_BODY or EVAL_BODY_INCLUDE.

 <p>
 When setBodyContent is invoked, the value of the implicit object out has already been changed in the pageContext
 object. The BodyContent object passed will have not data on it but may have been reused (and cleared) from some
 previous invocation.

 <p>
 The BodyContent object is available and with the appropriate content until after the invocation of the doEndTag
 method, at which case it may be reused.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>b</code> - the BodyContent</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../jakarta/servlet/jsp/tagext/BodyTag.html#doInitBody--"><code>doInitBody()</code></a>, 
<a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html#doAfterBody--"><code>IterationTag.doAfterBody()</code></a></dd>
</dl>
</li>
</ul>
<a name="doInitBody--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>doInitBody</h4>
<pre>void&nbsp;doInitBody()
         throws <a href="../../../../jakarta/servlet/jsp/JspException.html" title="class in jakarta.servlet.jsp">JspException</a></pre>
<div class="block">Prepare for evaluation of the body. This method is invoked by the JSP page implementation object after
 setBodyContent and before the first time the body is to be evaluated. This method will not be invoked for empty
 tags or for non-empty tags whose doStartTag() method returns SKIP_BODY or EVAL_BODY_INCLUDE.

 <p>
 The JSP container will resynchronize the values of any AT_BEGIN and NESTED variables (defined by the associated
 TagExtraInfo or TLD) after the invocation of doInitBody().</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../jakarta/servlet/jsp/JspException.html" title="class in jakarta.servlet.jsp">JspException</a></code> - if an error occurred while processing this tag</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../jakarta/servlet/jsp/tagext/IterationTag.html#doAfterBody--"><code>IterationTag.doAfterBody()</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/servlet/jsp/tagext/BodyContent.html" title="class in jakarta.servlet.jsp.tagext"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../jakarta/servlet/jsp/tagext/BodyTagSupport.html" title="class in jakarta.servlet.jsp.tagext"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/servlet/jsp/tagext/BodyTag.html" target="_top">Frames</a></li>
<li><a href="BodyTag.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
