Non utilizzare le parole chiave Java negli elementi dei linguaggi di espressione JSP e JSF

Questa regola contrassegna gli elementi EL (expression language) JSP che contengono variabili con nomi che contengono parole chiave Java o parole chiave riservate EL.

A partire da WebSphere Application Server Versione 8, la convalida del processore del linguaggio di espressione è diventata più rigorosa. Viene eseguito il controllo degli identificativi di variabile EL per verificare che non contengano parole chiave Java o parole riservate EL. Se un identificativo di variabile utilizzato in uno script JSTL/EL contiene parole chiave Java o parole riservate EL, il file JSP non viene convertito e, al runtime, viene generata un'eccezione com.ibm.ws.jsp.translator.JspTranslationException.

Questa regola contrassegna qualsiasi elemento del linguaggio di espressione che contiene variabili che comprendono uno degli insiemi correnti di parole chiave riservate Java.

La regola contrassegna anche l'utilizzo di parole chiave riservate JSP nelle variabili.

Il problema può essere risolto modificando il JSP ed il codice Java in modo da eliminare l'utilizzo delle parole chiave riservate. Se questa modifica è troppo estesa, è disponibile una proprietà di sistema per ripristinare il comportamento precedente alla Versione 8. Impostare la proprietà di sistema JVM org.apache.el.parser.SKIP_IDENTIFIER_CHECK sul valore true per tornare al comportamento precedente.

Nel seguente esempio:
< 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'elemento del linguaggio di espressione ${testObject.class.name eq 'SomeValue'} viene contrassegnato perché la variabile testObject.class.name contiene la parola chiave Java class.

Se non corretta, questa espressione causa un errore di runtime simile a:

< codice> Errore applicazione
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'}.

Se l'elaborazione del linguaggio di espressione è disabilitata, gli elementi nel file JSP non vengono contrassegnati.

Ad esempio, l'elaborazione del linguaggio di espressione è disabilitata quando la direttiva isELIgnored page è impostata su true. La regola non contrassegna elementi in un file JSP contrassegnato con questa direttiva.

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

L'elaborazione del linguaggio di espressione può essere disabilitata anche utilizzando l'elemento el-ignored. In questo esempio, webIgnored.jsp non verrà contrassegnato da questa regola.

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

L'elaborazione del linguaggio di espressione è sempre disabilitata per i moduli Web con versione servlet 2.3 o precedente.

Per ulteriori informazioni, consultare