Não usar Palavras-chave Java em Elementos de Idioma de Expressão JSP e JSF

Esta regra sinaliza os elementos de idioma de expressão (EL) JSP que contêm variáveis com nomes que contêm palavras-chave Java ou palavras-chave reservadas EL.

A partir do WebSphere Application Server Versão 8, a validação do processador de idioma de expressão tornou-se mais estrita. Os identificadores da variável EL são verificados para assegurar que eles não contenham palavras-chave Java ou palavras reservadas EL. Se um identificador de variável usado em um script JSTL/EL incluir palavras-chave Java ou palavras reservadas EL, o arquivo JSP não será convertido e uma com.ibm.ws.jsp.translator.JspTranslationException será lançada no tempo de execução.

Esta regra sinalizará qualquer elemento de linguagem de expressão que contenha variáveis que incluam qualquer um dos conjuntos atuais de palavras-chave reservadas para Java.

A regra também sinalizará o uso de JSP palavras reservadas em variáveis.

O problema pode ser resolvido modificando os códigos JSP e Java para eliminar o uso das palavras-chave reservadas. Se essa mudança for muito extensa, uma propriedade de sistema estará disponível para reverter para o comportamento anterior à Versão 8. Configure a propriedade de sistema JVM org.apache.el.parser.SKIP_IDENTIFIER_CHECK para um valor de true para voltar para o comportamento anterior.

No exemplo a seguir:
< span class="Code"> < span class= "indent2"> < /span> < c:if test=" ${not empty testObject}">
< span class= "indent2"> < /span> < c:escolha>
< span class= "indent2"> < /span> < c:when test=" ${testObject.class.name eq 'SomeValue'}"> < /span>

O elemento de idioma de expressão ${testObject.class.name eq 'SomeValue'} é sinalizado porque a variável testObject.class.name contém a palavra-chave Java class.

Se não corrigida, essa expressão produzirá um erro de tempo de execução semelhante a:

< code> Erro de aplicativo
SRVE0777E: Exceção lançada pela classe de aplicativo 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515'
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: não é possível analisar a função EL ${testObject.class.name eq 'SomeValue'}.

Se o processamento do idioma de expressão for desativado, os elementos no arquivo JSP não serão sinalizados.

Por exemplo, o processamento do idioma de expressão será desativado quando a diretiva de page isELIgnored for configurada como true. A regra não sinalizará elementos em um arquivo JSP marcado com essa diretiva.

< code> <% @ page isELIgnored= "true " %> < /code>

O processamento de idioma de expressão também pode ser desativado utilizando o elemento el-ignored de web.xml. Nesse exemplo, webIgnored.jsp não será sinalizado por essa regra.

< jsp-config>
< span class= "indent2"> < /span> < jsp-property-group>
<url-pattern>webIgnored.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>

O processamento de idioma de expressão é sempre desativado para módulos da web no servlet versão 2.3 ou inferior.

Para obter informações adicionais, consulte