Não Redefinir um Prefixo taglib Usando uma URI Diferente

Essa regra sinaliza diretivas taglib do JSP que associa o mesmo valor de atributo de prefix com valores de atributo de uri diferentes. A redefinição será sinalizada, se ocorrer dentro do mesmo arquivo JSP ou se ocorrer dentro de um fragmento ou arquivo JSP incluído estaticamente.

De acordo com especificações da JSP 2.1, um prefixo não deve ser redefinido dentro do escopo atual da JSP. Se um prefixo da biblioteca de tags já estiver definido com uma URI diferente dentro de um JSP ou em um JSP ou fragmento incluído, o produto deverá criar um erro de conversão. O JSP 2.1 era novo no WebSphere Application Server V7. A validação é nova para essa liberação e não foi imposta em versões anteriores.

A solução de melhores práticas é alterar a diretiva taglib para usar prefixos exclusivos e atualizar o arquivo JSP afetado para usar o novo prefixo.

Se você não desejar alterar os arquivos JSP, poderá reverter esse comportamento do módulo da web para esse de versões anteriores configurando o atributo JSP a seguir no arquivo de extensão da web da IBM (ibm-web-ext.xml):

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

Como alternativa, é possível configurar uma propriedade customizada de contêiner da web com.ibm.wsspi.jsp.allowtaglibprefixredefinition=true para afetar todos os aplicativos no servidor, em vez de apenas o módulo da web específico que a primeira opção oferece.

Exemplo 1: as seguintes linhas fornecidas estão no mesmo arquivo JSP chamado Page1.jsp
< span class="Code"> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ taglib uri= "/WEB-INF/otherLib.tld" prefix="fmt " %> < /span>

No Exemplo 1, a segunda entrada será sinalizada porque ela é uma redefinição de fmt. Para este exemplo, a ferramenta registrará a mensagem de aviso a seguir no log de erro do Eclipse:

!MESSAGE CWMIG1125W: O arquivo WebContent/Page1.jsp tentou redefinir o valor da URI para o prefixo fmt de /WEB-INF/fmt.tld para /WEB-INF/otherLib.tld.
A regra Não redefina um prefixo taglib usando um URI diferente encontrou o problema ao analisar o arquivo /MyJspProject/WebContent/Page1.jsp no projeto MyJspProject.

Exemplo 2: um arquivo JSP fornecido, chamado Page2.jsp com o conteúdo a seguir:
< code> <% @ taglib uri= "/WEB-INF/fmt.tld" prefix="fmt " %>
<% @ incluir arquivo= "myPage.jspf" %> < /code>

em que myPage.jspf contém a linha

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

No Exemplo 2, a linha taglib em myPage.jspf será sinalizada. Neste exemplo, você verá o aviso a seguir registrado no log de erro do Eclipse:

!MESSAGE CWMIG1124W: O arquivo WebContent/myPage.jspf tentou redefinir o valor da URI para o prefixo fmt de /WEB-INF/fmt.tld para /WEB-INF/otherLib.tld no escopo do arquivo WebContent/Page2.jsp.
A regra Não redefina um prefixo taglib usando um URI diferente encontrou o problema ao analisar o arquivo /MyJspProject/WebContent/Page2.jsp no projeto MyJspProject.

Usar as informações do log de erro para ajudar a compreender os arquivos conflitantes. Um arquivo JSP incluído pode causar redefinições com diversos arquivos JSP de base em diferentes escopos. Nesse caso, um arquivo pode ser sinalizado diversas vezes, em que uma única correção limpará diversos problemas. É possível que o mesmo arquivo incluído possa redefinir a URI de biblioteca de tags de maneira diferente, dependendo de qual arquivo JSP o inclui. Por esse motivo, cada erro é listado.

Para abrir o log de erro do Eclipse, clique em Janela > Mostrar visualização > Outro > Log de erro.

Para obter informações adicionais, consulte: