No utilizar palabras clave de Java en elementos de lenguaje de expresión JSP y JSF.

Esta regla marca los elementos de lenguaje de expresión JSP que contienen variables con nombres que contienen palabras clave Java o palabras clave reservadas de lenguaje de expresión.

A partir de WebSphere Application Server Versión 8, la validación del procesador de lenguaje de expresión pasó a ser más estricta. Se comprueban los identificadores de variables de lenguaje de expresión para asegurarse de que no contengan palabras clave Java ni palabras reservadas de lenguaje de expresión. Si un identificador de variable utilizado en un script de JSTL/EL incluye palabras clave Java o palabras reservadas de lenguaje de expresión, el archivo JSP no se convertirá y se emite una excepción com.ibm.ws.jsp.translator.JspTranslationException durante la ejecución.

Esta regla marcará cualquier elemento de lenguaje de expresión que contenga variables que incluyan cualquiera de las palabras clave reservadas Java.

La regla también marcará el uso de palabras reservadas de JSP en variables.

El problema se puede resolver modificando el JSP y el código Java para eliminar el uso de las palabras clave reservadas. Si este cambio es demasiado grande, hay una propiedad de sistema disponible para revertir al comportamiento anterior de la Versión 8. Establezca la propiedad de sistema de JVM org.apache.el.parser.SKIP_IDENTIFIER_CHECK en un valor de true para volver al comportamiento anterior.

En el ejemplo siguiente:
< span class="Code"> < span class= "indent2"> < /span> < c:if test=" ${not empty testObject}">
< span class= "indent2"> < /span> < c:choose>
< span class= "indent2"> < /span> < c:when test=" ${testObject.class.name eq 'SomeValue'}"> < /span>

El elemento de lenguaje de expresión ${testObject.class.name eq 'SomeValue'} está marcado porque la variable testObject.class.name contiene la palabra clave class de Java.

Si no se corrige la expresión, producirá un error de ejecución similar a:

< código> Error de aplicación
SRVE0777E: la clase de aplicación 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515' ha emitido una excepción
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: No se puede analizar la función EL ${testObject.class.name eq 'SomeValue'}.

Si el proceso de lenguaje de expresión está inhabilitado, los elementos contenidos en el archivo JSP no se marcarán.

Por ejemplo, el proceso de lenguaje de expresión está inhabilitado cuando la directiva page isELIgnored está definida como true. La regla no marcará los elementos de un archivo JSP que estén marcados con esta directiva.

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

El proceso de lenguaje de expresión también se puede inhabilitar utilizando el elemento el-ignored de web.xml. Este ejemplo, la regla no marcará webIgnored.jsp.

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

El proceso de lenguaje de expresión está siempre inhabilitado para módulos web en servlet versión 2.3 o anterior.

Para obtener información adicional, consulte