Ne pas utiliser de mots clés Java dans des éléments de langage d'expression JSP et JSF

Cette règle marque les éléments de langage d'expression JSP contenant des variables avec des noms comportant des mots clés Java ou des mots clés réservés au langage d'expression.

A compter de WebSphere Application Server version 8, la validation du programme de traitement du langage d'expression est plus strict. Les identificateurs de variables du langage d'expression sont vérifiés pour s'assurer qu'ils ne contiennent pas de mots clés Java ou de mots réservés du langage d'expression. Si un identificateur de variable utilisé dans un script JSTL/EL inclut des mots clés Java ou des mots réservés du langage d'expression, le fichier JSP ne sera pas converti et une exception com.ibm.ws.jsp.translator.JspTranslationException est générée lors de l'exécution.

Cette règle marque les éléments du langage d'expression contenant des variables qui incluent l'un des ensemble en cours de mots clés réservés Java.

La règle marque également l'utilisation des mots réservés JSP dans les variables.

Le problème peut être résolu en modifiant le code JSP et Java afin d'éliminer l'utilisation des mots clés réservés. Si cette modification est trop étendue, une propriété système est disponible pour revenir au comportement des versions antérieures à la version 8. Définissez la propriété système JVM org.apache.el.parser.SKIP_IDENTIFIER_CHECK sur la valeur true pour rétablir le comportement antérieur.

Dans l'exemple suivant :
< 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>

L'élément de langage d'expression ${testObject.class.name eq 'SomeValue'} est marqué, car la variable testObject.class.name contient le mot clé Java class.

Si cela n'est pas corrigé, l'expression générera une erreur d'exécution comme la suivante :

< code> Erreur d'application
SRVE0777E: Exception thrown by application class 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515'
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: Unable to parse EL function ${testObject.class.name eq 'SomeValue'}.

Si le traitement du langage d'expression est désactivé, les éléments du fichier JSP ne sont pas marqués.

Par exemple, le traitement du langage d'expression est désactivé lorsque la directive isELIgnored page est définie sur true. La règle ne marquera pas les éléments dans un fichier JSP marqué avec cette directive.

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

Le traitement du langage d'expression peut également être désactivé avec l'élément el-ignored du fichier web.xml. Dans cet exemple, webIgnored.jsp ne sera pas marqué par cette règle.

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

Le traitement du langage des expression est toujours désactivé pour les modules Web dans la versions 2.3 ou antérieure du servlet.

Pour plus d'informations, voir :