Präfix für Tag-Bibliothek nicht mit anderem URI neu definieren

Diese Regel markiert JSP-taglib-Anweisungen, die einen prefix-Attributwert verschiedenen uri-Attributwerten zuordnen. Die Neudefinition wird markiert, wenn sie innerhalb einer JSP-Datei oder innerhalb einer statisch eingeschlossenen JSP-Datei bzw. eines statisch eingeschlossenen JSP-Fragments vorkommt.

Gemäß den Spezifikationen von JSP 2.1 sollte ein Präfix im aktuellen Bereich der JSP nicht neu definiert werden. Falls innerhalb einer JSP-Datei oder in einer eingeschlossenen JSP bzw. einem eingeschlossenen JSP-Fragment bereits ein Tag-Bibliothekspräfix mit einem anderen URI definiert ist, muss das Produkt einen Umsetzungsfehler erzeugen. JSP 2.1 war in WebSphere Application Server Version 7 neu. Die Validierung ist daher auch neu in dem Release und wurde in früheren Versionen nicht umgesetzt.

Als beste Lösung hat sich bewährt, die Anweisung taglib so zu ändern, dass eindeutige Präfixe verwendet werden, und die betroffene JSP-Datei mit dem neuen Präfix zu aktualisieren.

Falls Sie die JSP-Dateien nicht ändern möchten, können Sie dieses Verhalten für das Webmodul auf das der Vorgängerversionen zurücksetzen. Setzen Sie dazu in der IBM Weberweiterungsdatei (ibm-web-ext.xml) das folgende JSP-Attribut:

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

Alternativ können Sie eine angepasste Webcontainereigenschaft com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true festlegen, die sich auf alle Anwendungen auf dem Server auswirkt und nicht wie oben nur auf ein bestimmtes Webmodul.

Beispiel 1 - Ausgegangen wird von einer JSP-Datei mit dem Namen Page1.jsp, die folgende Zeilen enthält:
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

Der zweite Eintrag aus Beispiel 1 wird markiert, weil er eine Neudefinition von fmt ist. Das Tool protokolliert für dieses Beispiel im Eclipse-Fehlerprotokoll die folgende Warnung:

CWMIG1125W: Die Datei WebContent/Page1.jsp hat versucht, den URI-Wert /WEB-INF/fmt.tld für das Präfix fmt mit /WEB-INF/otherLib.tld neu zu definieren.
Die Regel Präfix für Tag-Bibliothek nicht mit anderem URI neu definieren hat bei der Analyse der Datei /MyJspProject/WebContent/Page1.jsp im Projekt MyJspProject ein Problem festgestellt.

Beispiel 2 - Ausgegangen wird von einer JSP-Datei mit dem Namen Page2.jsp und folgendem Inhalt:
< Code> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ include file= "myPage.jspf" %> < /Code>

und myPage.jspf enthält die folgende Zeile:

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

In Beispiel 2 wird die taglib-Zeile in myPage.jspf markiert. Im Eclipse-Fehlerprotokoll wird für dieses Beispiel die folgende Warnung protokolliert:

CWMIG1124W: Die Datei WebContent/myPage.jspf hat versucht, den URI-Wert /WEB-INF/fmt.tld für das Präfix fmt im Geltungsbereich der Datei WebContent/Page2.jsp mit /WEB-INF/otherLib.tld neu zu definieren.
Die Regel Präfix für Tag-Bibliothek nicht mit anderem URI neu definieren hat bei der Analyse der Datei /MyJspProject/WebContent/Page2.jsp im Projekt MyJspProject ein Problem festgestellt.

Finden Sie mithilfe der Informationen im Fehlerprotokoll heraus, welche Dateien einen Konflikt erzeugen. Eine eingeschlossene JSP-Datei kann Neudefinitionen bei mehreren Basis-JSP-Dateien in verschiedenen Bereichen auslösen. In diesem Fall könnte eine Datei mehrfach markiert werden. Mehrere Probleme können mit nur einer Korrektur aufgelöst werden. Es ist möglich, das eine eingeschlossene Datei abhängig davon, in welcher JSP-Datei sie eingeschlossen ist, den URI der Tag-Bibliothek unterschiedlich neu definiert. Aus diesem Grund wird jeder Fehler aufgelistet.

Klicken Sie zum Öffnen des Eclipse-Fehlerprotokolls auf Fenster > Sicht anzeigen > Andere > Fehlerprotokoll.

Weitere Informationen finden Sie in den folgenden Artikeln: