Professional Java Server Programming J2EE Edition Chapter 12
The more significant methods of the BodyTag interface are listed below.
int doInitBody() throws JspException
Called after the tag has been initialized and doStartTag() has been called. Its return value should be
EVAL_BODY_TAG, in which case the tag's body content and any child tags will be evaluated, or SKIP_BODY,
in which case the body will be ignored. Watch out that you don't try to return EVAL_BODY_INCLUDE from a
BodyTag's doInitBody() or doStartTag() methods. The JSP engine will throw a JspException if it
detectes this.
int doAfterBody() throws JspException
doAfterBody() is called each time the tag's body has been processed. The return values are
EVAL_BODY_TAG and SKIP_BODY. EVAL_BODY_TAG directs the JSP engine to evaluate the tag's body and
any child tags again (resulting in at least one more call to this method), SKIP_BODY, causes processing of the
body content to terminate. This can be used to conditionally loop through the tag content.
void setBodyContent(BodyContent bodyContent)
Initialization method to set the class used to manipulate body content.
The javax.servlet.jsp.tagext.BodyContent Class
The BodyContent class is the key to BodyTag functionality. BodyContent is a subclass of JspWriter
that can be used to manipulate the body content of BodyTag implementations and store it for later retrieval.
The getBodyContent() method of BodyTagSupport returns the BodyContent instance associated
with a particular tag.
To understand the way in which the BodyContent class works, consider how JspWriter objects are
handled in JSPs using BodyTags: messages 5 and 10 from the sequence diagram above. Before the BodyTag
begins to evaluate its body content, the generated JSP implementation class includes the following line:
out = pageContext.pushBody();
After the BodyTag's methods have been called, it includes a matching call:
out = pageContext.popBody();
What this means is that each BodyTag has a kind of play area, enabling it to manipulate its BodyContent
without automatically affecting the JspWriter of the enclosing JSP page or tag. To generate output, the
BodyTag needs to write the contents of its BodyContent into its enclosing writer explicitly (see below).
This is the key difference between BodyTags and Tags: Tag implementations have no such flexibility, and
therefore cannot modify or suppress their body content, although they can prevent it from being evaluated
altogether by returning SKIP_BODY in their implementation of doStartTag().
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|