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 prefixelor 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.
O corecție automată va adăuga caracterul escape înaintea sintaxei #{.
Exemplu:
|
<h1>This is an example of template text that will be detected: #{detected}</h1>
|
Soluția automată va schimba acest cod în:
|
<h1>This is an example of template text that will be detected: \#{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" %>
|
Acest lucru va opri toate expresiile EL pentru acea pagină (adică 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:
< span class="Code"> < jsp-property-group>
& C & C & C & C & C & C & C & D
& & C & C & C & C & C & C & C
</jsp-property-group>
|
- Prin setarea grupului de proprietăţi JSP în web.xml pentru a dezactiva numai sintaxa amânată EL (#{})
De exemplu:
< span class="Code"> < jsp-property-group>
& C & C & C & C & C & C & C & D
& & C & C & C & D & C & C & C & C & C & C & C
</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: