Не следует переопределять префикс taglib другим URI

Это правило помечает директивы JSP taglib, которые связывают одно значение атрибута prefix с разными значениями атрибута uri. Переопределение будет отмечено, если оно задано в одном файле JSP либо в статически подключенном фрагменте или файле JSP.

В соответствии со спецификацией JSP 2.1 префикс не должен переопределяться в текущей области JSP. Если префикс библиотеки тегов уже определен с другим URI в JSP либо во включенном JSP или фрагменте, продукт должен сформировать ошибку перевода. Поддержка JSP 2.1 была добавлена в WebSphere Application Server V7. Проверка добавлена в этом выпуске и в предыдущих версиях не выполнялась.

Рекомендуемое решение - изменить директиву taglib таким образом, чтобы она использовала уникальные префиксы, а также изменить требуемый файл JSP и указать в нем новый префикс.

Файлы JSP можно не изменять, но для этого потребуется вернуть возможность переопределения префиксов в веб-модуле, принятую в предыдущих версиях. Для этого в файле веб-расширения IBM (ibm-web-ext.xml) задайте следующий атрибут JSP:

<jsp-attribute name="allowTaglibPrefixRedefinition" value="true"/>

Вместо этого можно задать пользовательское свойство веб-контейнера com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true для управления всеми приложениями на сервере, а не только конкретным веб-модулем, как предлагается в первом варианте.

Пример 1: рассмотрим следующие строки в одном файле JSP Page1.jsp
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

В примере 1 вторая запись будет помечена, так как она является переопределением fmt. Для данного примера инструмент запишет в файл протокола ошибок Eclipse следующее предупреждающее сообщение:

!СООБЩЕНИЕ CWMIG1125W: в файле WebContent/Page1.jsp обнаружена попытка переопределения значения URI для префикса fmt с /WEB-INF/fmt.tld на /WEB-INF/otherLib.tld.
Аннотация Не следует переопределять префикс taglib с помощью другого URI во время анализа файла /MyJspProject/WebContent/Page1.jsp в проекте MyJspProject.

Пример 2: рассмотрим файл JSP с именем Page2.jsp и следующим содержимым:
< код> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ include file= "myPage.jspf" %> < /code>

где myPage.jspf содержит строку

< code> <% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /code>

В примере 2 будет помечена строка taglib в файле myPage.jspf. В данном примере в протокол ошибок Eclipse будет записано следующее предупреждающее сообщение:

!СООБЩЕНИЕ CWMIG1124W: в файле WebContent/myPage.jspf обнаружена попытка переопределения значения URI для префикса fmt с /WEB-INF/fmt.tld на /WEB-INF/otherLib.tld в области файла WebContent/Page2.jsp.
Аннотация Не следует переопределять префикс taglib с помощью другого URI во время анализа файла /MyJspProject/WebContent/Page2.jsp в проекте MyJspProject.

Анализ информации в протоколе ошибок поможет найти конфликтующие файлы. Включенный файл JSP может привести к переопределению в нескольких базовых файлах JSP в различных областях. В этом случае файл может быть отмечен несколько раз, причем устранить несколько проблем сможет однократное исправление. Возможен вариант, при котором один включенный файл может переопределять URI библиотеки тегов по-разному в зависимости от того, в какой файл JSP он включен. По этой причине указывается каждая ошибка.

Для открытия протокола ошибок Eclipse выберите Окно > Показать представление > Другое > Протокол ошибок .

Дополнительная информация: