В этом приложении перечислены изменения в Спецификации JavaServer Pages.
Это приложение является ненормативным.
E.1 Изменения в PFD 2 и Финальном Проекте/Final Draft
Это окончательная версия, одобренная JCP Executive Comittee; документ был
обновлён для того, чтобы отразить этот статус.
Все полосы изменений/change bars были переустановлены.
Был добавлен новый механизм, позволяющий нуждающимся JSP-контейнерам
предоставлять расширенную информацию об ошибках времени трансляции из классов TagLibraryValidator.
Запись
TagLibraryValidator.validate() была слегка модифицирована и был добавлен новый класс
ValidationMessage. Эти объекты действуют через новый атрибут jsp:id, который по
выбору поддерживается JSP-контейнером и представляется только через вид XML страницы JSP. Были
затронуты: Глава JSP.5 (в основном Раздел JSP.5.3.13), Глава JSP.7 (Раздел JSP.7.5.1.2) и Глава
JSP.10 (Раздел JSP.10.5.5).
height & width стали rtexprs. Был затронут
Раздел JSP.4.7.
Добавлена конверсия значения атрибута от String-литерала к short и Short и
откорректирована конверсия для char и
Character в Таблице JSP.2-2.
Откорректирован оператор допустимых возвращаемых значений doStartTag() для Tag, IterationTag
и BodyTag. PFD2 некорректно указывал, что "emtpy/пустые" тэги могут
возвращать только SKIP_BODY; корректное утверждение: тэги, чьё body-content - "empty",
могут возвращать только SKIP_BODY.
Мандатные интерпретации атрибута
"id" в Разделе JSP 2.13.3 (что id представляет уникальные id в
пределах страницы)
и атрибута "scope" в Разделе JSP 2.13.4 (касающиеся области видимости
вводимого значения) не форсировались большинством (возможно, всеми?)
контейнерами и были несовместимы с распространённой практикой разработки
библиотек специальных тэгов. Именно эти разделы интерпретировались как
локализованные утверждения о стандартной акции jsp:useBean. Это было сделано
недвусмысленным, и эти разделы были перемещены в Главу
4, что отразить данные изменения. Были изменены Разделы JSP.2.13.3 и JSP.2.13.4
и Глава 4.
E.1.4 Разъяснение Множественных Запросов/Multiple
Requests и Потоков
Разъясняется, что экземпляры TLV должны надёжно распределяться по потокам. Это изменение
сделано в Разделе JSP.10.5.5.
Разъясняется, что экземпляр обработчика тэга активно обрабатывает только
один запрос за раз; это происходит, если обработчик тэга инстанциируется afresh
через вызовы new(), но это требует произнесения/spelling, как только вводится
пулинг/pooling обработчика тэга. Это разъяснение действует для Раздела
JSP.10.1.
Подтверждено, что в JSP-странице в синтаксисе
XML важен URI для основных акций jsp, а не префикс.
Разъяснено, что <?xml ... ?> не требуется (как указано в XML spec).
Дополнительно разъясняется интерпретация пробела в JSP-документах.
E.1.6 Разъяснение по Хорошо Известным Библиотекам
Тэгов
Разъяснено, что автор библиотеки тэгов может указать в комментариях, что
обработчик тэга может показывать на этапе прогона только некоторый поднабор
информации, описанной через класс реализации обработчика тэга. Это применяется
для специализированных реализаций известных библиотек тэгов, таких как
стандартная библиотека тэгов JSP. Это разъяснение повлияло на описание элемента tag
в Разделе JSP.7.4 и на описание Tag.setParent() и
TagSupport.findAncestorWithClass(). Удалён последний параграф в Разделе JSP.7.3.9;
у нас нет в планах удалять хорошо известный URI-механизм.
В целом "прочищено" описание вычисления отображения taglib между URI и путём
ресурса TLD; предыдущая версия была дебильной.
Разъяснено правильное использование и роль блок-конструкций в скриптлетах и
вложенных акциях. Это незначительно изменило Разделы JSP.2.3.3, JSP.6.4, JSP.6.4.4
и JSP.10.5.9.
Более точно указано, что размещение иконок делается относительно TLD-файла.
Был изменён Раздел JSP.7.4.
Удалён ненормативный комментарий о JSR-045 в Разделе JSP.2.1.6.
Удалён комментарий о том, что errorPages должны быть JSP-страницами, они
могут также быть static-объектами. Изменена Таблица JSP.2-1.
Подтверждено, что прослушиватели событий/event listeners в библиотеке тэгов
регистрируются до старта приложения. Изменён Раздел
JSP.7.1.2.2.
Разъяснено, когда нужно использовать соглашения по кавычкам для значений
атрибутов. Разъяснено, что значения атрибутов времени запроса следуют тем же
правилам. Изменены Разделы JSP.2.3.5, JSP.2.6 и JSP.2.13.1.
Разъяснена интерпретация соответствующих спецификаций для директив include
и для акций jsp:include и jsp:forward. Изменены Разделы JSP.2.2.1, JSP.2.10.4, JSP.4.4
и JSP.4.5
Исправлено несоответствие протокола прекомпиляции в
Разделе JSP.8.4.2,
касающееся того, направляются ли запросы странице или нет: не направляются.
Разъяснено, что субэлемент <type>
в <attribute> в файле TLD должен соответствовать ему же в свойстве
лежащего в его основе компонента JavaBean.
Разобрано использование
ClassLoader.getResource() при получении данных от класса TagLi-braryValidator.
Change bars/полосы изменений используются в почти всех главах для обозначения
изменений между PFD 1b и PFD 2. Исключение - главы 9 и 10, которые автоматически
генерируются из Java-источников и не имеют полос изменений. Большинство
изменений - семантические, но некоторые из них - редакторские поправки.
E.2.1
Элементы, Добавленные к Дескриптору Библиотеки Тэгов
Дескриптор Библиотеки Тэгов/Tag Library Descriptor (TLD)
был расширен описательной информацией для пользователей библиотеки тэгов.
Конкретнее, TLD можно теперь непосредственно вставить (например, используя
таблицу стилей XSLT) в документ конечного пользователя. Был добавлен новый
элемент <example> в качестве необязательного субэлемента в <tag>.
Существующий элемент <description> был сделан верным необязательным
субэлементом в <variable>, <attribute> и в
<validator>.
Были изменены Раздел JSP.7.4 и Приложение JSP.C. ОТД TLD 1, и Схемы/Schemas также были изменены.
E.2.2 Изменён Способ Кодировки Информации о Версии в TLD
Этот механизм, используемый для предоставления в TLD информации о версии, был изменён.
В PFD версия кодировалась в пространстве имён. В PFD2 не предполагается изменять
пространство имён, если только это не изменения несовместимости, и версия
кодируется в элементе <jsp-version>, который теперь является мандатным.
Новый URI для пространства имён:
"".
Были изменены Глава JSP.7 и Приложение JSP.C.
E.2.3
Назначение String-Литералов Атрибутам Object
Теперь можно назначать строковые литералы атрибуту, определённому как имеющий
тип Object, а также свойству типа Object. Все верные конвертации типов описаны в
Разделе JSP.2.13.2 и используются по ссылке в семантике <jsp:setProperty>.
E.2.4 Разъяснение по Верным Именам Префиксов, Акций и Атрибутов
Мы дали разъяснение по верным именам для префиксов, используемых в директивах taglib,
именам элементов, используемых в акциях, и именам атрибутов.
В спецификации JSP 1.1 различаются пустые/empty и непустые/non-empty акции, хотя
лучше было бы дать описание. К сожалению, эскиз/проект JSP 1.2 PFD1 не улучшил
это описание. Этот проект улучшил описание, указав точнее, какие методы при этом
вызываются. Были изменены Главы 2, 7 и 10.
Мы разъяснили несколько вопросов, относящихся к синтаксису XML для JSP-страниц
и к XML-просмотру/view JSP-страницы. Большинство изменений сделаны в Главе 5.
Удалён несуществующий атрибут flush в директиве include в
Разделе JSP.5.2.4.
Название jsp:cdata изменено на
jsp:text, поскольку его семантика очень похожа на элемент text в XSLT.
Изменён способ кодировки информации о версии в синтаксисе XML;
используемый URI теперь не зависит от версии, и вместо этого имеется
обязательный атрибут версии в jsp:root.
Разъясняется, что JSP-комментарии в
JSP-странице в синтаксисе JSP не сохраняются в XML-просмотре страницы.
Разъясняется, что JSP-страницы в синтаксисе XML
не должны иметь DOCTYPE.
Разъясняется использование директив
include в XML-просмотре страницы JSP.
Разъясняется формат URI, используемых в атрибутах xmlns для директив taglib,
и исправлено Приложение JSP.B.
Добавлен комментарий к ОТД для
TLD, указывающий, что DOCTYPE необходим и каково его значение. Значение не изменилось.
Удалён параграф в конце Раздела JSP.7.3.9, в котором был ненормативный
комментарий о будущем "хорошо известных URI".
Исправлено описание верных значений, которые могут передаваться атрибуту flush
акции include, в Разделе JSP.4.4.
Разъясняется, что <jsp:param> может появляться только
внутри <jsp:forward>, <jsp:in-clude>
и <jsp:params>.
Разъясняется, что <jsp:params> и
<jsp:fallback> могут появляться только внутри <jsp:plugin>.
Разрешён конфликт в Разделе
JSP.4.4 между Servlet и JSP-спецификацией, касающийся того, как модифицировать
шапки/headers во включённых/included акциях.
Раздел 10.1.1 в PFD1
некорректно описывал верные возвращаемые значения doStartTag() в обработчиках
тэгов, которые (обраб.) реализуют интерфейс BodyTag. Корректными значениями
являются SKIP_BODY,
EVAL_BODY_INCLUDE и EVAL_BODY_BUFFER. В Разделе это теперь указывается.
PFD 1b является наброском, имеющим в основном изменения форматирования и минимум
редакционных поправок. Этот проект показан только для того, чтобы легче было
коррелировать изменения между последними и более ранними проектами.
Полосы изменений используются для обозначения изменений от PFD 1 к PFD 1b.
Объект обработчика тэга может быть создан простым “new()”; это не должен
быть полностью оформленный Bean, полностью поддерживающий поведение метода java.beans.Beans.instantiate().
Удалена “рекомендация”, что элемент <uri> в TLD это URL на что-либо.
Разъяснено, что должна приниматься во внимание информация о зависимости от
расширений в упакованных библиотеках тэгов.
Разъяснены вызов и жизненный цикл TagLibraryValidator.
Разъяснено, где TLD могут появляться в упакованном JAR-файле.
Директива include перемещена обратно в Главу JSP.2.
javax.servlet.jsp.tagext.PageInfo переименован в javax.servlet.jsp.tagext.Page-Data
(для соответствия существующему TagData).
Добавлен параметр инициализации к проверке TagLibraryInformation в TLD путём
добавления нового элемента <validator>,
переименования <validatorclass> в <validator-class>, для
соответствия, и добавления
<init-param> как в дескрипторе Servlet web.xml.
Добавлен метод для передачи параметров инициализации классу проверщика/validator
и убрано использование TagLibraryInfo.
Добавлены String-аргументы prefix и uri в метод validate().
Изменены имена элементов в TLD для соответствия соглашению. Новые имена - <tag-class>,
<tei-class>, <tlib-version, <jsp-version>, <short-name>
и <body-content>. <info> был переименован в <description>.
Мы создали новый ненормативный документ “Using JSP Technology/Использование
Технологии JSP”. Этот документ ещё обновляется до
JSP 1.2 и Servlet 2.3. Мы переместили в этот документ следующее:
Некоторый ненормативный материал Обзора.
Все приложения с примерами библиотек тэгов.
Некоторый материал из главы Расширения Тэгов/Tag Extensions.
jsp:include может теперь указывать “flush=’false’”.
Сделан XML-просмотр JSP-страницы, доступный для ввода и проверки.
PropertyEditor.setAsText() может теперь использоваться для конвертации из
строкового литерального значения атрибута.
Новые классы ValidatorClass и JspPage - для проверки относительно библиотек
тэгов.
Новый интерфейс IteratorTag - для поддержки итерации без BodyContent.
Добавлены две новые константы
(EVAL_BODY_BUFFERED и EVAL_BODY_AGAIN), чтобы легче документировать работу
протокола тэга; они были разработаны так, чтобы старые обработчики тэгов
продолжали работать без изменений, но использовать старое имя для константы -
EVAL_BODY_TAG - теперь не рекомендуется.
Добавлены классы прослушивателей/listener к TLD.
Добавлены элементы к TLD для исключения необходимости писать классы TagExtraInfo
в самых обычных ситуациях.
Метод resetCustomAttributes() добавлен к интерфейсу Tag.
Добавлены элементы к TLD для предоставления иконок и описаний для
использования в утилитах авторизации.
Спецификация JSP 1.1 создана на основе спецификации JSP 1.0. Следующие
изменения были внесены между окончательным вариантом спецификации JSP 1.0
и окончательны вариантом спецификации JSP 1.1.
Добавлен механизм расширения переносимого тэга Дескриптором
Библиотеки Тэгов/Tag Library Descriptor на базе XML и стэк обработчиков тэгов
на этапе прогона. Обработчики тэгов базируются на компонентной модели JavaBeans.
Уточнен семантика атрибута uri в директивах taglib.
flush является теперь мандатным атрибутом в jsp:include, и единственным
верным значением является “true”.
Добавлены параметры к jsp:include и jsp:forward.
Появилась возможность компиляции JSP-страниц в Servlet-классы, которые могут
транспортироваться из одного JSP-контейнера в другой.
Добавлено приложение с примером этого.
Добавлен протокол прекомпиляции.
pushBody() и popBody() добавлены к PageContext.
Добавлены классы JspException и JspTagException.
Правильно используются термины JSP-страница, JSP-контейнер и подобные.