Non ridefinire un prefisso taglib utilizzando un URI differente

Questa regola contrassegna le direttive taglib JSP che associano lo stesso valore dell'attributo prefix a valori dell'attributo uri differenti. La ridefinizione viene contrassegnata se si verifica all'interno dello stesso file JSP o all'interno di un frammento o file JSP incluso in modo statico.

In base alle specifiche JSP 2.1, un prefisso non deve essere ridefinito all'interno dell'ambito corrente del JSP. Se un prefisso della libreria di tag è già definito con un URI differente all'interno di un JSP o in un frammento o JSP incluso, il prodotto deve generare un errore di conversione. JSP 2.1 è una nuova funzione in WebSphere Application Server V7. La convalida è una nuova funzione di tale release e non veniva applicata nelle versioni precedenti.

La soluzione ottimale consiste nella modifica della direttiva taglib in modo da utilizzare prefissi univoci e nell'aggiornamento del file JSP interessato in modo da utilizzare il nuovo prefisso.

Se non si desidera modificare i file JSP, è possibile ripristinare il comportamento per il modulo Web utilizzato nelle versioni precedenti impostando il seguente attributo JSP nel file di estensione Web IBM (ibm-web-ext.xml):

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

In alternativa, è possibile impostare una proprietà personalizzata del contenitore Web com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true che interessa tutte le applicazioni sul server invece di un particolare modulo Web, come offerto dalla prima opzione.

Esempio 1: Le seguenti righe si trovano nello stesso file JSP denominato Page1.jsp
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

Nell'Esempio 1, la seconda voce viene contrassegnata perché è una ridefinizione di fmt. Per questo esempio, lo strumento registra il seguente messaggio di avvertenza nel log degli errori di Eclipse:

!MESSAGE CWMIG1125W: Il file WebContent/Page1.jsp ha provato a ridefinire il valore dell'URI per il prefisso fmt da /WEB-INF/fmt.tld a /WEB-INF/otherLib.tld.
La Non ridefinire un prefisso taglib utilizzando un URI differente regola ha riscontrato il problema durante l'analisi del file /MyJspProject/WebContent/Page1.jsp nel progetto MyJspProject.

Esempio 2: Dato un file JSP, denominato Page2.jsp con il seguente contenuto:
< codice> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ include file= "myPage.jspf" %> < /codice>

dove myPage.jspf contiene la riga

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

Nell'esempio 2, la riga taglib in myPage.jspf verrà contrassegnata. In questo esempio, nel log degli errori di Eclipse viene registrato il seguente messaggio di avvertenza:

!MESSAGE CWMIG1124W: Il file WebContent/myPage.jspf ha provato a ridefinire il valore dell'URI per il prefisso fmt da /WEB-INF/fmt.tld a /WEB-INF/otherLib.tld nell'ambito del file WebContent/Page2.jsp.
La Non ridefinire un prefisso taglib utilizzando un URI differente regola ha rilevato il problema durante l'analisi del file /MyJspProject/WebContent/Page2.jsp nel progetto MyJspProject.

Utilizzare le informazioni del log di errore per individuare i file in conflitto. Un file JSP incluso può causare ridefinizioni con più file JSP di base in ambiti differenti. In questo caso, un file potrebbe essere contrassegnato più volte ed una singola correzione potrebbe risolvere più problemi. È possibile che lo stesso file incluso possa ridefinire l'URI della libreria di tag in modo differente in base al file JSP che lo include. Per questo motivo viene elencato ogni errore.

Per aprire il log degli errori di Eclipse, fare clic su Window > Show view > Other > Error log.

Per ulteriori informazioni, vedere: