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:
<c:if test="${not empty testObject}">
<c:choose>
<c:when test="${testObject.class.name eq 'SomeValue'}">

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:

Anwendungsfehler
SRVE0777E: Ausnahme von Anwendungsklasse 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515' ausgelöst.
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: Unable to parse EL function ${testObject.class.name eq 'SomeValue'}.

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.

<%@ page isELIgnored="true" %>

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>
<jsp-property-group>
<url-pattern>webIgnored.jsp</url-pattern>
<el-ignored>true</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: