O'Reilly logo

JavaServer Pages, Second Edition by Hans Bergsten

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Developing an Iterating Action

As I alluded to earlier, a tag handler can ask the container to evaluate the action element’s body repeatedly until some condition is true. For each evaluation, the result can be different because variables used in the body may change their values. An example of an iterating action is the JSTL <c:forEach> action. It can iterate over the element’s body once for each element in a collection.

A tag handler that evaluates its body repeatedly implements the IterationTag interface, which contains only one method:

public int doAfterBody( ) throws JspException

Called by the container after it has processed the action element’s body.

If you have worked with JSP 1.1 previously, this method may look familiar. It was part of the BodyTag interface in JSP 1.1 but was moved to the new IterationTag interface in JSP 1.2 to provide for a more efficient handling of iteration actions that don’t need access to their element body.

A tag handler that implements the IterationTag interface is at first handled the same way as a tag handler implementing the Tag interface: the container calls all property setter methods and the doStartTag( ) method. Then things divert slightly, as illustrated in Figure 20-3.

IterationTag interface methods

Figure 20-3. IterationTag interface methods

After the call to doStartTag( ), the doAfterBody( ) method may be called before the doEndTag( ) method is finally called. ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required