Это правило помечает использование последовательности символов '#{' в файлах JSP.
В JSP 2.1 последовательность символов #{} является зарезервированным словом.
Использование старых файлов JSP, содержащих последовательность символов #{}, в JSP 2.1 приведет к ошибке.
Последовательность #{ обнаруживается при выполнении следующих условий:
- Версия сервлета (из файла web.xml) не ниже 2.4.
- У страницы не задана директива isELIgnored="true".
- Страница не связана с <url-pattern> в <jsp-property-group> (элемент <jsp-config> в файле web.xml), где <el-ignored> равен true.
- Последовательность #{ есть в тексте шаблона jsp.
- Запись присутствует в теге, который не является тегом JSF (Java Server Faces).
Правило обнаруживает теги JSF путем сравнения префикса тега со списком префиксов в свойстве "Пропустить теги с такими префиксами" правила.
По умолчанию пропускаются следующие префиксы JSF: h,f,ui,facelet,composite,comp,ez.
Обратите внимание на следующие элементы:
- Пользователь должен добавить любые другие префиксы JSF, определенные в приложении, чтобы эти теги игнорировались.
- Пользователь должен удалить все префиксы из параметра префикса, которые используются на страницах JSP, но не в качестве тега JSF.
- Если префикс в одних случаях используется как префикс JSF, а в других - как обычный тег JSP, то пользователь должен не добавлять его в список параметра, но вручную проверить каждый созданный результат.
Быстрое исправление добавляет Escape-символ перед #{.
Пример:
|
<h1>Это пример текста шаблона, который будет обнаружен: #{detected}</h1>
|
Быстрое исправление изменит этот код на:
|
<h1>Это пример текста шаблона, который будет обнаружен: \#{detected}</h1>
|
Также существуют различные способы отключить язык выражений (EL):
- Постранично для всех выражений EL разработчик может указать атрибут isELIgnored со значением
true в директиве page JSP
Пример:
| <%@ page isELIgnored="true" %> |
Это отключает все выражения EL на данной странице (то есть все ${exp} и #{exp})
- С помощью группы свойств JSP разработчик может отключить EL для одной страницы или
для нескольких страниц, соответствующих определенному шаблону URL, указав значение true
в элементе el-ignored
Например:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
|
- С помощью группы свойств JSP в файле web.xml можно отключить только отложенный синтаксис EL (#{})
Например:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
</jsp-property-group> |
- Постранично отключить только отложенный синтаксис EL, указав значение true в атрибуте deferred-syntax-allowed-as-literal директивы page JSP
Пример:
| <%@ page deferredSyntaxAllowedAsLiteral="true" %> |
Примечание о порядке следования:
Атрибуты isELIgnored и deferredSyntaxAllowedAsLiteral директивы page имеют приоритет перед
соответствующими элементами в файле web.xml.
Эти атрибуты директивы page переопределяют значения соответствующих элементов в файле web.xml.
Дополнительная информация: