Спецификация Java Server Pages 1.2

JSP.10.1.2 IterationTag



Синтаксис


public interface IterationTag extends Tag

Все Известные Субинтерфейсы: BodyTag


Все Суперинтерфейсы: Tag


Все Известные Реализующие Классы: TagSupport


Описание

Интерфейс 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().

JSP.10.1.2.3 Поля


public static final int EVAL_BODY_AGAIN

Запрашивает повторение обсчёта некоторого тела/body. Возвращается методом doAfterBody. Для совместимости с JSP 1.1 значение должно тщательно подбираться, чтобы быть тем же самым, что и в, теперь не рекомендуемом, BodyTag.EVAL_BODY_TAG.


JSP.10.1.2.4 Методы


public int doAfterBody()

Осуществляет (пере) обсчёт тела. Этот метод вызывается объектом реализации JSP-страницы после каждого обсчёта тела в объекте BodyEvaluation. Этот метод не вызывается, если нет обсчёта тела/body.

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

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

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

Вызывает: JspException


Содержание раздела