Все классы и интерфейсы Java Server Pages

       

Javax.servlet.jsp.tagext Интерфейс BodyTag


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

public abstract interface BodyTagextends

Интерфейс BodyTag расширяет IterationTag путём определения дополнительных методов, которые дают обработчику тэга возможность манипулировать содержимым, вычисляя его тело.

Обработчик тэга отвечает за манипуляции с содержимым тела. Например, обработчик тэга может взять содержимое тела, конвертировать его в String с помощью метода bodyContent.getString и затем использовать его (содержимое). Ил обработчик тэга может взять содержимое тела и записать его в содержащий JspWriter, используя метод bodyContent.writeOut.

Обработчик тэга, реализующий BodyTag, рассматривается как обработчик, реализующий IterationTag, за исключением того, что метод doStartTag может возвратить SKIP_BODY, EVAL_BODY_INCLUDE или EVAL_BODY_BUFFERED.

Если возвращено EVAL_BODY_INCLUDE, вычисление происходит, как в IterationTag.

Если возвращено EVAL_BODY_BUFFERED, будет создан BodyContent-объект (кодом, сгенерированным JSP-компилятором) для захвата вычисления тела. Код, сгенерированный JSP-компилятором, получает BodyContent-объект с помощью вызова метода pushBody текущего pageContext'а, который дополнительно сохраняет предыдущее значение out. Компилятор страницы возвращает этот объект через вызов метода popBody класса PageContext; этот вызов также восстанавливает значение out.

Этот интерфейс предоставляет одно новое свойство с setter-методом один новый метод акции.

Свойства

Имеется новое свойство, bodyContent, для получения BodyContent-объекта, в котором объект реализации JSP-страницы будет размещать результат вычисления (и повторного вычисления, если нужно) тела. Setter-метод (setBodyContent) будет вызываться только в том случае, если doStartTag() возвращает EVAL_BODY_BUFFERED.

Методы

В дополнение к setter-методу для свойства bodyContent имеется новый метод акции: doInitBody(), который вызывается сразу после setBodyContent() и перед вычислением тела. Этот метод будет вызываться только в том случае, если doStartTag() возвращает EVAL_BODY_BUFFERED.


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

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





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

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

В ином случае, метод doStartTag() может возвратить SKIP_BODY, EVAL_BODY_INCLUDE или EVAL_BODY_BUFFERED.

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

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

Если возвращено EVAL_BODY_BUFFERED, вызывается setBodyContent(), вызывается doInitBody(), тело вычисляется, вызывается doAfterBody(), а затем, после 0 или более итераций, вызывается doEndTag().

Поле. Резюме.
staticint

          Запрашивается создание нового буфера, BodyContent, в котором вычисляется тело этого тэга.
static int

          Не рекомендуется. Как и в Java JSP API 1.2, использовать BodyTag.EVAL_BODY_BUFFERED или IterationTag.EVAL_BODY_AGAIN.
 
Поля, унаследованные из класса javax.servlet.jsp.tagext.
 
Поля, унаследованные из класса javax.servlet.jsp.tagext.
, , ,
Метод. Резюме.
 void ()

          Подготавливает вычисление тела.
 void ( b)

          Устанавливает свойство bodyContent.
 
Методы, унаследованные из интерфейса javax.servlet.jsp.tagext.
 
Методы, унаследованные из интерфейса javax.servlet.jsp.tagext.
, , , , ,
Поле. Детали.

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