Spec-Zone .ru
спецификации, руководства, описания, API


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

Все Суперинтерфейсы:
IterationTag, JspTag, Тег
Все Известные Классы с реализацией:
BodyTagSupport, UIComponentBodyTag, UIComponentClassicTagBase, UIComponentELTag, UIComponentTag

public interface BodyTag
расширяет IterationTag

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

Это - обязанность обработчика тега управлять контентом тела. Например обработчик тега может взять контент тела, преобразовать его в Строку, используя 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, который дополнительно имеет эффект сохранения предыдущего, оценивают. Компилятор страницы возвращает этот объект, вызывая popBody метод PageContext class; вызов также восстанавливает значение.

Интерфейс предоставляет одному новому свойству метод метода set и один новый метод действия.

Свойства

Есть новое свойство: bodyContent, чтобы содержать объект BodyContent, куда объект реализации Страницы JSP поместит оценку (и переоценку, если соответствующий) тела. Метод метода set (setBodyContent) будет только вызван, если doStartTag () возвратит EVAL_BODY_BUFFERED, и у соответствующего элемента действия нет пустого тела.

Методы

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

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

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

Жизненный цикл Детализирует Схему Перехода для BodyTag

Пустое и Непустое Действие

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

Отметьте, что, какие методы вызываются после того, как doStartTag () зависит и от возвращаемого значения и от того, если элемент пользовательского действия пуст или не в странице JSP, не, как это объявляется в TLD.

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

Если EVAL_BODY_INCLUDE возвращается, и элемент пользовательского действия не пуст, setBodyContent () не вызывается, doInitBody () не вызывается, тело оценивается и "проходится" к току, doAfterBody () вызывается и затем, после того, как нуль или больше итераций, doEndTag () вызываются. Если элемент пользовательского действия пуст, только doStart (), и doEndTag () вызываются.

Если EVAL_BODY_BUFFERED возвращается, и элемент пользовательского действия не пуст, setBodyContent () вызывается, doInitBody () вызывается, тело оценивается, doAfterBody () вызывается, и затем, после того, как нуль или больше итераций, doEndTag () вызываются. Если элемент пользовательского действия пуст, только doStart (), и doEndTag () вызываются.


Полевая Сводка
static int EVAL_BODY_BUFFERED
          Запросите создание нового буфера, BodyContent, на котором можно оценить тело этого тега.
static int EVAL_BODY_TAG
          Осуждаемый. С Java API JSP 1.2, используйте BodyTag. EVAL_BODY_BUFFERED или IterationTag. EVAL_BODY_AGAIN.
 
Поля, наследованные от интерфейса javax.servlet.jsp.tagext. IterationTag
EVAL_BODY_AGAIN
 
Поля, наследованные от интерфейса javax.servlet.jsp.tagext. Тег
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
 
Сводка метода
 void doInitBody()
          Подготовьтесь к оценке тела.
 void setBodyContent(BodyContent b)
          Установите bodyContent свойство.
 
Методы, наследованные от интерфейса javax.servlet.jsp.tagext. IterationTag
doAfterBody
 
Методы, наследованные от интерфейса javax.servlet.jsp.tagext. Тег
doEndTag, doStartTag, getParent, release, setPageContext, setParent
 

Полевая Деталь

EVAL_BODY_TAG

static final int EVAL_BODY_TAG
Осуждаемый. С Java API JSP 1.2, используйте BodyTag. EVAL_BODY_BUFFERED или IterationTag. EVAL_BODY_AGAIN.
Осуждаемая константа, у которой есть то же самое значение как EVAL_BODY_BUFFERED и EVAL_BODY_AGAIN. Это имя было отмечено как осуждающийся, чтобы поощрить использование двух различных сроков, которые являются намного более дескриптивными.

См. Также:
Постоянные Значения полей

EVAL_BODY_BUFFERED

static final int EVAL_BODY_BUFFERED
Запросите создание нового буфера, BodyContent, на котором можно оценить тело этого тега. Возвращенный из doStartTag, когда это реализует BodyTag. Это - недопустимое возвращаемое значение для doStartTag, когда class не реализует BodyTag.

См. Также:
Постоянные Значения полей
Деталь метода

setBodyContent

void setBodyContent(BodyContent b)
Установите bodyContent свойство. Этот метод вызывается объектом реализации страницы JSP самое большее однажды на вызов действия. Этот метод будет вызван прежде doInitBody. Этот метод не будет вызван для пустых тегов или для непустых тегов, doStartTag которых () метод возвращает SKIP_BODY или EVAL_BODY_INCLUDE.

Когда setBodyContent вызывается, значение неявного объекта было уже изменено в объекте pageContext. Объект BodyContent, который передают, будет иметь не данные на этом, но, возможно, был снова использован (и очищен) от некоторого предыдущего вызова.

Объект BodyContent доступен и с соответствующим контентом до окончания вызова doEndTag метода, в котором случае это может быть снова использовано.

Параметры:
b - BodyContent
См. Также:
doInitBody(), IterationTag.doAfterBody()

doInitBody

void doInitBody()
                throws JspException
Подготовьтесь к оценке тела. Этот метод вызывается объектом реализации страницы JSP после setBodyContent и перед первым разом, когда тело должно быть оценено. Этот метод не будет вызван для пустых тегов или для непустых тегов, doStartTag которых () метод возвращает SKIP_BODY или EVAL_BODY_INCLUDE.

Контейнер JSP ресинхронизирует значения любого AT_BEGIN и ВЛОЖЕННЫХ переменных (определенный связанным TagExtraInfo или TLD) после вызова doInitBody ().

Броски:
JspException - если ошибка произошла, обрабатывая этот тег
См. Также:
IterationTag.doAfterBody()


Представьте ошибку или функцию

Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается срокам действия лицензии.

Сгенерированный на 10-February-2011 12:41

free hit counter