javax.servlet.jsp.tagext
Интерфейс IterationTag

Все Известные Субинтерейсы:
BodyTag
Все Известные Реализующие Классы:
TagSupport

public abstract interface IterationTag
extends Tag

Интерфейс IterationTag расширяет Tag, определяя один дополнительный метод, управляющий повторяющимися вычислениями тела.

Обработчик тэга, реализующий IterationTag, рассматривается как обработчик, реализующий Tag, с учётом методов doStartTag() и doEndTag(). IterationTag предоставляет новый метод: doAfterBody().

Метод doAfterBody() вызывается после каждого обсчёта тела для управления повторными вычислениями тела. Если doAfterBody() возвращает IterationTag.EVAL_BODY_AGAIN, то тело будет вычисляться ещё раз.
Если doAfterBody() возвращает Tag.SKIP_BODY, тело будет пропущено, и вместо этого будет вычислен doEndTag().

Свойства

Нет новых свойств, дополняющих свойства Tag'а.

Методы

Есть один новый метод: doAfterBody().

Жизненный цикл

Детали жизненного цикла показаны на диаграмме. Исключения, вызываемые в процессе вычисления doStartTag(), BODY и doAfterBody() прерывают выполнение и помещаются на верх стэка, если только обработчик тэга не реализует интерфейс TryCatchFinally; см. детали об этом интерфейсе.

Пустая и Непустая Акция

Если TagLibraryDescriptor-файл указывает, что акция всегда обязана иметь пустую акцию, через вхождение <body-content> - "empty", то метод doStartTag() обязан возвратить SKIP_BODY. Иначе, метод doStartTag() может возвратить SKIP_BODY или EVAL_BODY_INCLUDE.

Если возвращено SKIP_BODY, тело не вычисляется и вызывается doEndTag().

Если возвращено EVAL_BODY_INCLUDE, тело вычисляется и "передаётся" текущему out, затем вызывается doAfterBody() и, после 0 или более итераций, вызывается doEndTag().


Поле. Резюме.
static int EVAL_BODY_AGAIN
          Запрос на вычисление тела.
 
Поля, унаследованные из класса javax.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
 
Метод. Резюме.
 int doAfterBody ()
          Производит (повторное) вычисление тела.
 
Методы, унаследованные из интерфейса javax.servlet.jsp.tagext.Tag
doEndTag, doStartTag, getParent, release, setPageContext, setParent
 

Поле. Детали.

EVAL_BODY_AGAIN

public static final int EVAL_BODY_AGAIN
Запрашивает вычисление некоторого тела. Возвращается из doAfterBody. Для обеспечения совместимости с JSP 1.1, значение тщательно выбирается, чтобы быть таким же, как и, ныне не рекомендуемое, BodyTag.EVAL_BODY_TAG,
Метод. Детали.

doAfterBody

public int doAfterBody() throws JspException
Производит (повторное) вычисление тела. Этот метод вызывается объектом реализации JSP-страницы после каждого вычисления тела в объекте BodyEvaluation. Этот метод не вызывается. если нет вычисления тела.

Если doAfterBody возвращает EVAL_BODY_AGAIN, происходит новое вычисление тела (с последующим новым вызовом doAfterBody).
Если doAfterBody возвращает SKIP_BODY, больше вычисление тела не производится, значение out будет восстановлено методом popBody в pageContext и будет затем вызван doEndTag.

Повторные вызовы метода могут привести к различным действиям, поскольку могут происходить изменения разделяемого статуса, или из-за внешних вычислений.

JSP-контейнер будет ресинхронизировать любые значения переменных, которые обозначены как таковые в TagExtraInfo, после вызова doAfterBody().

Возвращает:
нужны ли дополнительные обсчёты тела.
Вызывает:
JspException