Questa regola contrassegna l'utilizzo della sequenza '#{' nei file JSP.
In JSP 2.1, la sintassi #{} rappresenta una parola chiave riservata.
Quando in JSP 2.1 vengono utilizzati file JSP che contengono la sequenza #{}, viene
generato un errore.
Per rilevare la sequenza #{ è necessario che siano rispettate le condizioni riportate di seguito:
- La versione servlet (da web.xml) deve essere 2.4 o superiore.
- La pagina non ha una direttiva isELIgnored="true" impostata.
- La pagina non viene associata a <url-pattern> in <jsp-property-group> (da <jsp-config> in web.xml) con <el-ignored> impostato su true.
- La voce #{ si trova in un testo modello jsp.
- La voce si trova in un tag che non è un tag JSF (Java Server Faces).
La regola rileva i tag JSF confrontando il prefisso del tag con l'elenco dei prefissi forniti nella proprietà della regola denominata "Ignora tag che utilizzano questi prefissi".
I valori predefiniti dei prefissi JSF ignorati sono:
h,f,ui,facelet,composite,comp,ez.
Notare quanto riportato di seguito:
- L'utente deve aggiungere qualsiasi altro prefisso JSF definito dalla propria applicazione affinché tal tag vengano ignorati.
- L'utente deve rimuovere qualsiasi voce dal parametro prefix se il prefisso viene utilizzato nelle pagine JSP ma non per un tag JSF.
- Se un prefisso viene utilizzato come un prefisso JSF in alcuni casi e come normale tag JSP in altri casi, l'utente non deve includere il prefisso nell'elenco dei parametri e deve esaminare manualmente ciascun risultato generato.
Una correzione automatica aggiungerà il carattere di escape prima della sintassi #{.
Esempio:
|
<h1>This is an example of template text that will be detected: #{detected}</h1>
|
La correzione automatica modificherà questo codice in:
|
<h1>This is an example of template text that will be detected: \#{detected}</h1>
|
Sono disponibili anche altri metodi differenti per disattivare EL (Expression Language):
- Base pagina per pagina per tutte le espressioni EL: lo sviluppatore può specificare l'attributo isELIgnored della direttiva della pagina JSP ed impostarne il valore su true
Ad esempio:
|
<%@ page isELIgnored ="true" %>
|
In questo modo verranno disattivate tutte le espressioni EL per quella pagina (ovvero tutte
${exp} and #{exp}
)
- Mediante l'impostazione del gruppo di proprietà JSP in web.xml: lo sviluppatore può disattivare l'EL per una singola pagina oppure diverse pagine in base a specifici modelli URL impostando l'elemento el-ignored su true
Ad esempio:
< span class="Code"> < jsp - property - group>
< url-pattern> *.jsp < /url-pattern>
< el-ignored> true < /el-ignored>
</jsp-property-group>
|
- Mediante l'impostazione del gruppo di proprietà JSP in web.xml per disattivare solo la sintassi rinviata EL (#{})
Ad esempio:
< span class="Code"> < jsp - property - group>
< url-pattern> *.jsp < /url-pattern>
< differred - syntax - allowed - as - literal> true < /deferred - syntax - allowed - as - literal>
</jsp-property-group> |
- Base pagina per pagina solo per la sintassi rinviata impostando l'attributo deferred-syntax-allowed-as-literal della direttiva della pagina JSP su true
Ad esempio:
|
<%@ page deferredSyntaxAllowedAsLiteral="true" %>
|
Nota sulla precedenza:
Gli attributi isELIgnored e deferredSyntaxAllowedAsLiteral della direttiva della pagina hanno precedenza sui rispettivi elementi e valori in web.xml.
Questi attributi della direttiva della pagina sostituiscono i valori dei rispettivi elementi in web.xml.
Per ulteriori informazioni, consultare: