|
|||||||||
ПРЕДЫДУЩИЙ КЛАСС СЛЕДУЮЩИЙ КЛАСС | ФРЭЙМЫ БЕЗ ФРЭЙМОВ | ||||||||
РЕЗЮМЕ: ВНУТРЕННИЙ | ПОЛЕ | КОНСТРУКТОР | МЕТОД | ДЕТАЛИ: ПОЛЕ | КОНСТРУКТОР | МЕТОД |
java.lang.Object
|
+--javax.servlet.jsp.tagext.VariableInfo
Информация о переменных скриптинга, которые создаются/модифицируются тэгом (на этапе прогона). Эта информация предоставляется TagExtraInfo-классами и используется фазой трансляции JSP.
Переменные скриптинга, генерируемые специальной акцией, могут иметь значения scope: 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 определяет интерпретацию 3 значений:
Информация Переменной в TLD
Информация переменной скриптинга в большинстве случаев может кодироваться непосредственно в Tag Library Descriptor'е через использование субэлемента <variable> элемента <tag>. См. спецификацию JSP.
Поле. Резюме. | |
static int
|
AT_BEGIN
Информация о видимости: переменная видна после начального тэга. |
static int
|
AT_END
Информация о видимости: переменная видна после конечного тэга. |
static int
|
NESTED
Информация о видимости: переменная видна только внутри между начальным/конечным тэгами. |
Конструктор. Резюме. | |
VariableInfo
(java.lang.String varName,
java.lang.String className,
boolean declare,
int scope)
Конструктор. Эти объекты могут быть созданы (на этапе трансляции) экземплярами TagExtraInfo. |
Метод. Резюме. | |
java.lang.String
|
getClassName
()
|
boolean
|
getDeclare
()
|
int
|
getScope
()
|
java.lang.String
|
getVarName
()
|
Методы, унаследованные из класса java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
|
Поле. Детали. |
public static final int NESTED
public static final int AT_BEGIN
public static final int AT_END
Конструктор. Детали. |
public VariableInfo(java.lang.String varName,
java.lang.String className,
boolean declare,
int scope)
id
- имя переменной скриптингаclassName
-
имя класса переменной скриптингаdeclare
- если true, это новая
переменная (в некоторых языках программирования потребуется определение)scope
-
обозначение лексической области видимости переменнойМетод. Детали. |
public java.lang.String getVarName()
public java.lang.String getClassName()
public boolean getDeclare()
public int getScope()
|
|||||||||
ПРЕДЫДУЩИЙ КЛАСС СЛЕДУЮЩИЙ КЛАСС | ФРЭЙМЫ БЕЗ ФРЭЙМОВ | ||||||||
РЕЗЮМЕ: ВНУТРЕННИЙ | ПОЛЕ | КОНСТРУКТОР | МЕТОД | ДЕТАЛИ: ПОЛЕ | КОНСТРУКТОР | МЕТОД |