Не следует использовать ключевые слова Java в элементах языка выражений JSP и JSF

Это правило отмечает элементы языка выражений (EL) JSP, содержащие переменные с именами, содержащими ключевые слова Java или зарезервированные ключевые слова EL.

Начиная с WebSphere Application Server версии 8, проверка процессора языка выражений стала более строгой. Проверка идентификаторов переменных EL выполняется для гарантии, что в них не содержатся ключевые слова Java или зарезервированные слова EL. Если идентификатор переменной в сценарии JSTL/EL включает ключевые слова Java или зарезервированные ключевые слова EL, то файл JSP не будет переведен, и во время выполнения возникнет исключительная ситуация com.ibm.ws.jsp.translator.JspTranslationException.

Это правило отметит любой элемент языка выражения, содержащий переменные, в которые включено любое ключевое слово из текущего набора зарезервированных слов Java.

Правило пометит также использование зарезервированных слов JSP в переменных.

Для устранения неполадки необходимо изменить исходный код Java и JSP и исключить из него зарезервированные ключевые слова. Если изменений слишком много, то с помощью системного свойства можно вернуть уровень проверки, принятый до версии 8. Для возврата к предыдущему уровню проверки присвойте системному свойству JVM org.apache.el.parser.SKIP_IDENTIFIER_CHECK значение true.

Пример:
<c:if test="${not empty testObject}">
<c:choose>
<c:when test="${testObject.class.name eq 'SomeValue'}">

Элемент языка выражения ${testObject.class.name eq 'SomeValue'} будет помечен, так как переменная testObject.class.name содержит ключевое слово Java class .

Если эту ошибку не устранить, то выражение приведет к возникновению ошибки времени выполнения, похожей на следующую:

Ошибка приложения
SRVE0777E: Исключение выброшено классом приложения 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515'
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: Не удалось проанализировать функцию EL ${testObject.class.name eq 'SomeValue'}.

Если обработка языка выражений запрещена, элементы в файле JSP помечены не будут.

Например, если директиве isELIgnored page присвоено значение true, обработка языка выражений будет отключена. Правило не будет отмечать в файле JSP элементы, помеченные с помощью этой директивы.

<%@ page isELIgnored="true" %>

Обработку языка выражений можно также отключить с помощью элемента el-ignored в файле web.xml. В следующем примере webIgnored.jsp не будет отмечен правилом.

<jsp-config>
<jsp-property-group>
<url-pattern>webIgnored.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>

Обработка языка выражений всегда выключена для веб-модулей с версией сервлета 2.3 или ниже.

Дополнительная информация: