Această regulă semnalează utilizarea secvenţei '#{' în fişierele JSP.
În JSP 2.1, sintaxa #{} este acum un cuvânt cheie rezervat.
Când sunt utilizate în JSP 2.1 fişiere JSP mai vechi, care conţin secvenţa #{}, acestea generează o eroare.
Pentru a fi detectată secvenţa #{, trebuie să fie îndeplinite următoarele condiţii:
- Versiunea servletului (din web.xml) trebuie să fie 2.4 sa mai mare.
- Pagina nu are setată o directivă isELIgnored="true".
- Pagina nu este mapată la un <url-pattern> dintr-un <jsp-property-group> (din <jsp-config>, în web.xml) cu
<el-ignored> setat la true.
- Intrarea #{ este într-un text de şablon jsp.
- Intrarea se află într-un tag care nu este un tag JSF (Java Server Faces).
Regula detectează tagurile JSF prin compararea prefixului de tag cu lista de prefixe furnizată în proprietatea de regulă numită
"Ocoliţi tagurile utilizând aceste prefixe".
Valorile implicite ale tagurilor JSF ocolite sunt: h,f,ui,facelet,composite,comp,ez.
Rețineți următoarele articole:
- Utilizatorul ar trebui să adauge orice alte prefixe JSF definite de aplicaţiile lor pentru ca tagurile respective să fie
ignorate.
- Utilizatorul ar trebui să înlăture orice intrare din parametrul de prefix dacă prefixul este utilizat în paginile JSP, dar nu
pentru un tag JSF.
- Dacă un prefix este utilizat ca prefix JSF în unele cazuri şi ca JSP normal în alte cazuri, utilizatorul ar trebui să nu includă
prefixul în lista de parametri şi să examineze manual fiecare rezultat generat.
Corecţia rapidă va adăuga caracterul escape înaintea sintaxei #{.
Exemplu:
|
<h1>Acesta este un exemplu de text șablon care va fi detectat: #{detected}</h1>
|
Corecţie rapidă va modifica acest cod la:
|
<h1>Acesta este un exemplu de text șablon care va fi detectat: \#{detected}</h1>
|
De asemenea, există diferite moduri de a dezactiva limba expresiei (Expression Language - EL):
- Pagină cu pagină, pentru toate expresiile EL: Dezvoltatorul poate să specifice atributul isELIgnored
al directivei de pagină JSP şi să-i seteze valoarea la true
De exemplu:
| <%@ page isELIgnored ="true" %> |
Aceasta va dezactiva toate expresiile EL pentru pagina respectivă (cu alte cuvinte, toate ${exp} and
#{exp})
- Prin setarea grupului de proprietăţi JSP în web.xml: Dezvoltatorul poate dezactiva EL pentru o singură pagină sau mai multe
pagini, în funcţie de tiparul URL specific, setând elementul el-ignored la true
De exemplu:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
|
- Prin setarea grupului de proprietăţi JSP în web.xml pentru a dezactiva numai sintaxa amânată EL (#{})
De exemplu:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
</jsp-property-group> |
- Pagină cu pagină, numai pentru sintaxa amânată EL, setând la true atributul deferred-syntax-allowed-as-literal al directivei de
pagină JSP
De exemplu:
| <%@ page deferredSyntaxAllowedAsLiteral="true" %> |
Notă privind precedența:
Atributele isELIgnored şi deferredSyntaxAllowedAsLiteral ale directivei de pagină au precedenţă faţă de elementele şi valorile respective
din web.xml.
Aceste atribute ale directivei de pagină înlocuiesc valorile elementelor respective în web.xml.
Pentru informații suplimentare, vedeți: