No redefinir un prefijo taglib utilizando un URI diferente

Esta regla marca las directivas taglib de JSP que asocian un mismo valor del atributo prefix con valores diferentes del atributo uri. La redefinición se marcará si se produce dentro del mismo archivo JSP o dentro de un archivo o fragmento JSP incluido estáticamente.

De acuerdo con las especificaciones JSP 2.1, no se debe redefinir un prefijo dentro del ámbito actual del JSP. Si ya se ha definido un prefijo de biblioteca de etiquetas con un URI diferente dentro de un JSP o en un archivo o fragmento JSP incluido, el producto debe crear un error de conversión. JSP 2.1 era nuevo en WebSphere Application Server V7. La validación es nueva para ese release y no se aplicó en versiones anteriores.

La solución recomendada es cambiar la directiva taglib para utilizar prefijos exclusivos y actualizar el archivo JSP afectado para utilizar el nuevo prefijo.

Si no desea cambiar los archivos JSP, puede invertir este comportamiento para el módulo web y volver al comportamiento de versiones anteriores definiendo el siguiente atributo de JSP en el archivo de extensión web de IBM (ibm-web-ext.xml):

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

Como alternativa, puede definir la propiedad personalizada de contenedor web com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true para actuar sobre todas las aplicaciones del servidor, en lugar de sólo el módulo web como ocurre en la opción anterior.

Ejemplo 1: se supone que las líneas siguientes están en un mismo archivo JSP denominado Page1.jsp
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

En el Ejemplo 1, se marcará la segunda entrada porque es una redefinición de fmt. Para este ejemplo, la herramienta anotará el mensaje de aviso siguiente en el registro de errores de Eclipse:

!MESSAGE CWMIG1125W: el archivo WebContent/Page1.jsp ha intentado redefinir el valor de URI para el prefijo fmt y cambiarlo de /WEB-INF/fmt.tld a /WEB-INF/otherLib.tld.
La regla No redefinir un prefijo taglib utilizando un URI diferente ha encontrado el problema al analizar el archivo /MyJspProject/WebContent/Page1.jsp en el proyecto MyJspProject.

Ejemplo 2: se dispone de un archivo JSP, llamado Page2.jsp, con el contenido siguiente:
< código> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ include file= "myPage.jspf" %> < /código>

donde myPage.jspf contiene la línea

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

En el Ejemplo 2, se marcará la línea de taglib contenida en myPage.jspf. Para este ejemplo, se anotará el mensaje de aviso siguiente en el registro de errores de Eclipse:

!MESSAGE CWMIG1124W: el archivo WebContent/myPage.jspf ha intentado redefinir el valor de URI para el prefijo fmt y cambiarlo de /WEB-INF/fmt.tld a /WEB-INF/otherLib.tld en el ámbito del archivo WebContent/Page2.jsp.
La regla No redefinir un prefijo taglib utilizando un URI diferente ha encontrado el problema al analizar el archivo /MyJspProject/WebContent/Page2.jsp en el proyecto MyJspProject.

Utilice la información del registro de errores para determinar los archivos en conflicto. Un archivo JSP incluido puede causar redefiniciones con varios archivos JSP base en ámbitos diferentes. En este caso, un archivo puede ser marcado varias veces y un solo arreglo puede corregir varios problemas. Es posible que un mismo archivo incluido redefina de forma diferente el URI de la biblioteca de etiquetas dependiendo del archivo JSP donde resida. Por este motivo, se lista cada error.

Para abrir el registro de errores de Eclipse, pulse Ventana > Mostrar vista > Otros > Registro de errores.

Para obtener información adicional, consulte: