Keine Java-Schlüsselwörter in Elementen der JSP- und JSF-Ausdruckssprache verwenden

Diese Regel markiert in der JSP-Ausdruckssprache Elemente mit Variablen, deren Namen Java-Schlüsselwörter oder reservierte Wörter der Ausdruckssprache enthalten.

Ab WebSphere Application Server Version 8 ist die Validierung des Ausdruckssprachenprozessors strenger. Die IDs von Variablen der Ausdruckssprache werden überprüft, um sicherzustellen, dass sie keine Java-Schlüsselwörter oder reservierten Wörter der Ausdruckssprache enthalten. Wenn eine Variable in einem JSTL/EL-Script Java-Schlüsselwörter oder reservierte Wörter der Ausdruckssprache enthält, wird die JSP-Datei nicht umgesetzt und in der Laufzeit eine Ausnahme com.ibm.ws.jsp.translator.JspTranslationException ausgelöst.

Diese Regel markiert in der Ausdruckssprache jedes Element, das Variablen mit einem der derzeit reservierten Java-Schlüsselwörter enthält.

Außerdem markiert die Regel die Verwendung reservierter JSP-Wörter in Variablen.

Sie können das Problem lösen, indem Sie den JSP- und Java-Code modifizieren. Eliminieren Sie die reservierten Schlüsselwörter. Wenn diese Änderung zu umfangreich ist, kann das Verhalten mit einer bereitgestellten Systemeigenschaft auf das Verhalten vor Version 8 zurückgesetzt werden. Setzen Sie die JVM-Systemeigenschaft org.apache.el.parser.SKIP_IDENTIFIER_CHECK auf den Wert true, wenn sie es auf das frühere Verhalten zurücksetzen möchten.

Sehen Sie sich das folgende Beispiel an:
< 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>

Das Element ${testObject.class.name eq 'SomeValue'} der Ausdruckssprache wird markiert, weil die Variable testObject.class.name das Java-Schlüsselwort class enthält.

Wird dieser Fehler nicht korrigiert, erzeugt dieser Ausdruck einen Laufzeitfehler ähnlich dem folgenden:

< Code> Anwendungsfehler
SRVE0777E: Ausnahme von Anwendungsklasse 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515' ausgelöst.
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: Die EL-Funktion ${testObject.class.name eq 'SomeValue'} kann syntaktisch nicht analysiert werden.

Wenn die Verarbeitung der Ausdruckssprache inaktiviert ist, werden keine Elemente in der JSP-Datei markiert.

Die Verarbeitung der Ausdruckssprache ist beispielsweise inaktiviert, wenn die page-Anweisung isELIgnored auf true gesetzt ist. In einer JSP-Datei mit dieser Anweisung markiert die Regel keine Elemente.

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

Die Verarbeitung der Ausdruckssprache kann auch inaktiviert sein, wenn in der Datei web.xml das Element el-ignored verwendet wird. Im folgenden Beispiel wird die Datei webIgnored.jsp nicht von dieser Regel markiert.

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

Für Webmodule bis Servlet-Version 2.3 ist die Verarbeitung der Ausdruckssprache immer inaktiviert.

Weitere Informationen finden Sie in den folgenden Dokumenten: