Ta reguła oznacza flagą użycie sekwencji '#{' w plikach JSP.
W przypadku standardu JSP 2.1 składnia #{} to teraz zastrzeżone słowo kluczowe.
Jeśli starsze pliki JSP zawierające sekwencję #{} zostaną użyte w środowisku JSP
2.1, spowoduje to wystąpienie błędu.
Aby wykryć sekwencję #{, muszą zostać spełnione następujące warunki:
- Wersja serwletu (z pliku web.xml) musi mieć wartość 2.4 lub większą.
- Strona nie ma ustawionej dyrektywy isELIgnored="true".
- Strona nie dokonuje odwzorowania na <url-pattern> w <jsp-property-group> (z <jsp-config> w pliku web.xml) z elementem <el-ignored> ustawionym na wartość true.
- Pozycja #{ znajduje się w tekście szablonu jsp.
- Ten element znajduje się w znaczniku, który nie jest znacznikiem a Java Server Faces (JSF).
Reguła wykrywa znaczniki JSF, porównując przedrostek znacznika z listą przedrostków podanych we właściwości reguły o nazwie „Pomiń znaczniki przy użyciu tych przedrostków”.
Domyślne wartości pominiętych przedrostków JSF to:
h,f,ui,facelet,composite,comp,ez.
Należy pamiętać o następujących kwestiach:
- Użytkownik powinien dodać wszystkie inne przedrostki JSF zdefiniowane przez ich aplikację, aby znaczniki te były ignorowane.
- Użytkownik powinien usunąć każdą pozycję z parametru przedrostka, jeśli przedrostek jest używany na stronach JSP, ale nie dla znacznika JSF.
- Jeśli w niektórych przypadkach przedrostek jest używany jako przedrostek JSF, a w innych przypadkach jest używany jako zwykły znacznik JSP, użytkownik nie powinien umieszczać tego przedrostka na liście parametrów i powinien ręcznie sprawdzić każdy wygenerowany wynik.
Automatyczna poprawka doda znak escape przed składnią #{.
Przykład:
|
<h1>This is an example of template text that will be detected: #{detected}</h1>
|
Automatyczna poprawka zmieni ten kod na:
|
<h1>This is an example of template text that will be detected: \#{detected}</h1>
|
Istnieją również różne sposoby dezaktywowania języka wyrażeń (EL):
- Strona po stronie dla wszystkich wyrażeń EL: programista może określić atrybut isELIgnored dyrektywy JSP page i ustawić wartość true.
Na przykład:
|
<%@ page isELIgnored ="true" %>
|
Spowoduje to wyłączenie wszystkich wyrażeń EL dla tej strony (tzn. wszystkich).
${exp} and #{exp}
)
- Za pomocą ustawienia JSP property group w pliku web.xml: programista może dezaktywować wyrażenia EL dla pojedynczej strony lub wielu stron na podstawie konkretnego wzorca adresów URL, ustawiając element el-ignored na wartość true.
Na przykład:
< span class="Code"> < jsp-property-group>
< url-pattern> *.jsp < /url-pattern>
< el-ignored> true < /el-ignored>
</jsp-property-group>
|
- Za pomocą ustawienia JSP property group w pliku web.xml w celu dezaktywowania tylko odroczonej składni EL (#{}).
Na przykład:
< span class="Code"> < jsp-property-group>
< url-pattern> *.jsp < /url-pattern>
< odroczony-składnia-dozwolona-as-literal> true < /odroczona-składnia-dozwolona-jako-litera>
</jsp-property-group> |
- Strona po stronie tylko dla odroczonej składni EL przez ustawienie atrybutu deferred-syntax-allowed-as-literal dyrektywy JSP page na wartość true.
Na przykład:
|
<%@ page deferredSyntaxAllowedAsLiteral="true" %>
|
Uwaga dotycząca kolejności:
Atrybuty isELIgnored i deferredSyntaxAllowedAsLiteral dyrektywy page mają pierwszeństwo przed odpowiednimi elementami i wartościami w pliku web.xml.
Te atrybuty dyrektywy page przesłaniają wartości odpowiednich elementów w pliku web.xml.
Informacje dodatkowe: