Nu redefiniţi un prefix taglib utilizând un alt URI

Această regulă semnalează directivele taglib care asociază aceeaşi valoare de atribut prefix cu diferite valori de atribut uri. Redefinirea va fi semnalată dacă apare în acelaşi fişier JSP sau dacă apare într-un fişier JSP inclus static sau într-un fragment.

În conformitate cu specificaţiile JSP 2.1, un prefix nu trebuie redefinit în domeniul (scope) curent al JSP. Dacă un prefix taglib este deja definit cu un URI diferit într-un JSP sau într-un JSP inclus sau fragment, produsul trebuie să creeze o eroare de translatare. JSP 2.1 a fost nou în WebSphere Application Server V7. Validarea este nouă pentru acea ediţie şi nu a fost impusă în versiunile anterioare.

Soluţia de cea mai bună practică este modificarea directivei taglib pentru a folosi prefixe unice şi actualizarea fişierului JSP afectat pentru a folosi noul prefix.

Dacă nu doriţi să modificaţi fişierele JSP, puteţi să vă întoarceţi pentru modulul web la comportamentul ediţiilor anterioare, prin setarea următorului atribut JSP în fişierul de extensii web IBM (ibm-web-ext.xml):

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

Alternativ, puteţi seta o proprietate personalizată de container web com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true care să afecteze toate aplicaţiile de pe server, nu numai modulul web particular ca în prima opţiune.

Exemplu 1: Sunt date următoarele linii din acelaşi fişier JSP numit Page1.jsp
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

În Exemplu 1, a doua intrare va fi semnalată deoarece este o redefinire a fmt. Pentru acest exemplu, unealta va jurnaliza următorul mesaj de avertizare în istoricul de erori Eclipse:

!MESSAGE CWMIG1125W: The WebContent/Page1.jsp file attempted to redefine the URI value for the fmt prefix from /WEB-INF/fmt.tld to /WEB-INF/otherLib.tld.
The Do not redefine a taglib prefix using a different URI rule encountered the problem while analyzing the /MyJspProject/WebContent/Page1.jsp file in the MyJspProject project.

Exemplul 2: Este dat un fişier JSP, numit Page2.jsp cu următorul conţinut:
< code> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ include file= "myPage.jspf" %> < /code>

unde myPage.jspf conţine linia

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

În Exemplul 2, linia taglib din myPage.jspf va fi semnalată. În acest exemplu, veţi vedea următorul avertisment în istoricul de erori Eclipse:

!MESSAGE CWMIG1124W: The WebContent/myPage.jspf file attempted to redefine the URI value for the fmt prefix from /WEB-INF/fmt.tld to /WEB-INF/otherLib.tld in the scope of the WebContent/Page2.jsp file.
The Do not redefine a taglib prefix using a different URI rule encountered the problem while analyzing the /MyJspProject/WebContent/Page2.jsp file in the MyJspProject project.

Utilizaţi informaţiile din istoricul de erori pentru a vă da seama care sunt fişierele în conflict. Un fişier JSP inclus poate cauza redefinirile cu mai multe fişiere JSP de bază în diferite domenii (scope). În acest caz, un fişier ar putea fi semnalat de mai multe ori în cazul atunci când o singură corecţie va rezolva mai multe probleme. Este posibil ca acelaşi fişier inclus poate redefini diferit URI-ul de bibliotecă de taguri în funcţie de ce fişier JSP îl include. Pentru acest motiv, este listată fiecare eroare.

Pentru a deschide istoricul de erori, faceţi clic pe Window > Show view > Other > Error log.

Pentru informaţii suplimentare, consultaţi: