Не следует использовать ключевые слова 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.

Пример:
< 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>

Элемент языка выражения ${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 элементы, помеченные с помощью этой директивы.

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

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

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

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

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