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

JSP.10.5.9 VariableInfo


Синтаксис


public class VariableInfo


Описание

Информация о переменных скриптинга, которые создаются/модифицируются тэгом (на этапе прогона). Эта информация предоставляется классами TagExtraInfo и используется фазой трансляции JSP.


Переменные скриптинга, генерируемые специальной акцией, могут иметь значения области видимости page, request, session и application.

Имя класса (VariableInfo.getClassName) в возвращаемых объектах может использоваться для определения типов переменных скриптинга. В связи с этим специальная акция не может создавать переменную скриптинга примитивного/базового типа. Чтобы обойти это, используйте “boxed/боксовые” типы.

Имя класса может быть Полным Квалифицированным Именем Класса, или кратким именем класса.


Если предоставляется Полное Квалифицированное Имя Класса, оно должно ссылаться на класс, находящийся в CLASSPATH для Web-Приложения (см. спецификацию Servlet 2.3 - как правило это WEB-INF/lib и WEB-INF/classes). Невыполнение этого приводит к ошибке времени трансляции.


Если дано краткое имя класса в объектах VariableInfo, тогда имя класса обязано быть именем public-класса в контексте директив import страницы, на которой специальная акция появилась (будет проверяться, имеется ли словоблудие JLS для ссылки на него). Класс обязан также быть в CLASSPATH для Web-Приложения (см. спецификацию Servlet 2.3 - как правило это WEB-INF/lib и WEB-INF/classes). Невыполнение этого приводит к ошибке времени трансляции.

Использование Комментариев

Часто полное квалифицированное имя класса ссылается на класс, который известен библиотеке тэгов и, следовательно, находится в том же JAR-файле, что и обработчики тэгов. В большинстве других случаев оно ссылается на класс, который находится на платформе, на которой построен JSP-процессор (типа J2EE).

Употребление полных квалифицированных имён в такой манере делает их использование относительно устойчивым к ошибкам конфигурации.


Краткое имя обычно генерируется библиотекой тэгов на базе некоторых атрибутов, передаваемых от пользователя специальной акции (автора), и это, соответственно, менее надёжно: например, отсутствие директивы import в ссылающейся JSP-странице приведёт к неверному краткому имени класса и к ошибке трансляции.


Протокол Синхронизации


Результатом вызова getVariableInfo является массив объектов VariableInfo. Каждый такой объект описывает переменную скриптинга, предоставляя её имя, тип, указывая, является ли переменная новой или нет, и какова её область видимости. Область видимости лучше видна на рисунке:



Спецификация JSP 1.2 определяет интерпретацию трёх значений:





  • NESTED, если переменная скриптинга доступна между начальным и конечным тэгами акции, которая определяет её.

    AT_BEGIN, если переменная скриптинга доступна из начального тэга акции, которая определяет её, до достижения предела видимости.

    AT_END, если переменная скриптинга доступна после конечного тэга акции, которая определяет её, до достижения предела видимости.



Значение области видимости переменной предполагает, какие методы влияют на значение и, следовательно, где нужна синхронизация:



  • для NESTED, после doInitBody и doAfterBody для обработчика тэга, реализующего BodyTag, и после doStartTag - в противном случае.

    для AT_BEGIN, после doInitBody, doAfterBody и doEndTag для обработчика тэга, реализующего BodyTag, и doStartTag и doEndTag - в противном случае.

    для AT_END, после метода doEndTag.



Информация о Переменной в TLD


Информация переменной скриптинга может быть также непосредственно кодирована для большинства случаев в Tag Library Descriptor путём использования субэлемента <variable> элемента <tag>. См. спецификацию JSP.

JSP.10.5.9.36 Поля


public static final int AT_BEGIN
  Информация области видимости о том, что переменная скриптинга видна после начального тэга.

public static final int AT_END

  Информация области видимости о том, что переменная скриптинга видна после конечного тэга.

public static final int NESTED
  Информация области видимости о том, что переменная скриптинга видна только между начальным/конечным тэгами.

JSP.10.5.9.37 Конструкторы


public VariableInfo(java.lang.String varName, java.lang.String className, boolean declare, int scope)

Конструктор. Эти объекты могут быть созданы (на этапе трансляции) экземплярами TagExtraInfo.

Параметры:

id - имя переменной скриптинга.

className - имя переменной скриптинга (наверное, класса??).

declare - если true, это новая переменная (в некоторых языках это требует объявления).

scope - обозначение лексической области видимости переменной.

JSP.10.5.9.38 Методы


public java.lang.String getClassName()

public boolean getDeclare()

public int getScope()

public java.lang.String getVarName()


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