Nie redefiniuj przedrostka biblioteki taglib przy użyciu innego identyfikatora URI

Ta reguła oznacza dyrektywy JSP taglib, w przypadku których taka sama wartość atrybutu prefix jest powiązana z różnymi wartościami atrybutów uri. Redefinicja zostanie oznaczona, jeśli występuje w obrębie tego samego pliku JSP lub jeśli występuje w statycznie uwzględnianym fragmencie lub pliku JSP.

Zgodnie ze specyfikacjami JSP 2.1 przedrostek nie powinien być redefiniowany w ramach aktualnego zasięgu pliku JSP. Jeśli przedrostek biblioteki znaczników został już zdefiniowany przy użyciu innego identyfikatora URI w pliku JSP lub w uwzględnianym fragmencie lub pliku JSP, produkt musi wygenerować błąd translacji. Specyfikacje JSP 2.1 stanowią nowość wprowadzoną na serwerze WebSphere Application Server 7. Sprawdzanie poprawności to nowość wprowadzona w tej wersji. Nie było ono wymuszane we wcześniejszych wersjach.

Sprawdzone rozwiązanie: zmień dyrektywę taglib tak, aby używane były unikalne przedrostki i zaktualizuj plik JSP, którego dotyczy ta zmiana, tak, aby używany był nowy przedrostek.

Jeśli nie chcesz zmieniać plików JSP, możesz przywrócić zachowanie modułu WWW z wcześniejszych wersji, ustawiając następujący atrybut JSP w pliku rozszerzeń WWW IBM (ibm-web-ext.xml):

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

Ewentualnie możesz ustawić właściwość niestandardową kontenera WWW com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true tak, aby wpływała na wszystkie aplikacje na serwerze, a nie tylko na konkretny moduł WWW (takie rozwiązanie oferuje pierwsza opcja).

Przykład 1: Poniższe wiersze znajdują się w tym samym pliku JSP o nazwie Strona1.jsp
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

W przykładzie 1 drugi wpis zostanie oznaczony, ponieważ stanowi on redefinicję przedrostka fmt. W tym przykładzie narzędzie zarejestruje następujący komunikat ostrzegawczy w dzienniku błędów platformy Eclipse:

!KOMUNIKAT CWMIG1125W: W pliku WebContent/Strona1.jsp została podjęta próba zredefiniowania wartości identyfikatora URI w przypadku przedrostka fmt z wartości /WEB-INF/fmt.tld na wartość /WEB-INF/innaBib.tld.
Reguła Nie redefiniuj przedrostka biblioteki taglib przy użyciu innego identyfikatora URI napotkała problem podczas analizowania pliku /MyJspProject/WebContent/Page1.jsp w projekcie MyJspProject.

Przykład 2: Plik JSP o nazwie Strona2.jsp z następującą treścią:
< kod> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ include file= "myPage.jspf" %> < /kod>

Plik mojaStrona.jspf zawiera wiersz:

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

W przykładzie 2 wiersz taglib w pliku mojaStrona.jspf zostanie oznaczony. W tym przykładzie zostanie wyświetlone następujące ostrzeżenie, które zostanie zarejestrowane w dzienniku błędów platformy Eclipse:

!KOMUNIKAT CWMIG1124W: W pliku WebContent/mojaStrona.jspf została podjęta próba zredefiniowania wartości identyfikatora w przypadku przedrostka fmt z wartości /WEB-INF/fmt.tld na wartość /WEB-INF/innaBib.tld w ramach zasięgu pliku WebContent/Strona2.jsp.
Reguła Nie redefiniuj przedrostka biblioteki taglib przy użyciu innego identyfikatora URI napotkała problem podczas analizowania pliku /MyJspProject/WebContent/Page2.jsp w projekcie MyJspProject.

Skorzystaj z informacji zawartych w dzienniku błędów, aby znaleźć pliki powodujące konflikt. Uwzględniany plik JSP może powodować występowanie redefinicji w wielu podstawowych plikach JSP w różnych zasięgach. W takim przypadku plik może zostać oznaczony wiele razy, przy czym jedna poprawka rozwiąże wiele problemów. Może się tak zdarzyć, że ten sam plik uwzględniany redefiniuje identyfikator URI biblioteki znaczników różnie w zależności od pliku JSP, w którym jest on uwzględniany. Dlatego rejestrowany jest każdy błąd.

Aby otworzyć dziennik błędów platformy Eclipse, kliknij opcję Okna > Pokaż widok > Inny > Dziennik błędów.

Informacje dodatkowe: