Ez a szabály a '#{' szekvencia használatát látja el jelzővel a JSP fájlokban.
A JSP 2.1 változatában a #{} szintaxis már fenntartott kulcsszónak számít.
Ha #{} szekvenciát tartalmazó régebbi JSP fájlok kerülnek a JSP 2.1 változatában felhasználásra, akkor azok hibát fognak előállítani.
A #{ szekvencia felismeréséhez az alábbi feltételeknek kell teljesülnie:
- A szervlet verziószámának (a web.xml fájlban) 2.4 vagy újabbnak kell lennie.
- Az oldalhoz nincs beállítva isELIgnored="true" utasítás.
- Az oldal nem képezhető le <jsp-property-group> csoportbeli
<url-pattern> mintára (a web.xml fájlbeli <jsp-config> elemben),
true értékre beállított <el-ignored> beállítással.
- A #{ bejegyzés egy JSP sablon szövegében fordul elő.
- A bejegyzés olyan címkék között van, amelyek nem Java Server Faces (JSF) címkék.
A szabály
úgy ismeri fel a JSF címkéket, hogy a címke előtagját összehasonlítja a szabály
"Bypass tags using these prefixes" nevű tulajdonságában biztosított előtag
listával.
A kihagyott JSF előtagok alapértelmezett értékei a következők:
h,f,ui,facelet,composite,comp,ez.
Vegye figyelembe az alábbiakat:
- A felhasználónak az alkalmazása által meghatározott összes többi JSF
előtagot hozzá kell adnia ahhoz, hogy a címkék figyelmen kívül maradjanak.
- A felhasználónak minden bejegyzést el kell távolítania a prefix
paraméterből, ha az előtagot használják a JSP oldalakban, de JSF címkéhez
nem.
- Ha az előtagot néhány esetben JSF előtagként használják, más esetekben
pedig normál JSP címkeként, akkor a felhasználónak nem szabad felvennie az
előtagot a paraméterlistába, és saját kezűleg kell minden egyes előállított
eredményt megvizsgálnia.
A gyorsjavítás felveszi az escape karaktert a #{ szintaxis elé.
Példa:
|
<h1>Ez egy példa a sablonszövegre, amelyet a rendszer észlelni fog: #{detected}</h1>
|
A gyorsjavítás a kódot a következőre módosítja:
|
<h1>Ez egy példa a sablonszövegre, amelyet a rendszer észlelni fog: #{detected}</h1>
|
Van más módja is az Expression Language (EL) deaktiválásának:
- Oldalról oldalra az összes EL kifejezés esetében: a fejlesztő megadhatja a
JSP oldal utasítás isELIgnored attribútumát és beállíthatja true értékre
Például:
| <%@ page isELIgnored="true" %> |
Ez minden EL kifejezést kikapcsol az adott oldal esetében (azaz minden
${exp} és #{exp} kifejezést)
- JSP tulajdonságcsoport beállításon keresztül a web.xml fájlban: A fejlesztő
deaktiválhatja az EL-t egyetlen oldal esetében, vagy adott URL mninata alapján
több oldal esetében is, az el-ignored elemet true értékre beállítva
Például:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
|
- JSP tulajdonságcsoport beállításán keresztül a web.xml fájlban, csak az EL
elhalasztott szintaxist (#{}) deaktiválva
Például:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
</jsp-property-group> |
- Oldalanként csak az EL elhalasztott szintaxis esetében, a JSP oldal
utasítás deferred-syntax-allowed-as-literal attribútumát true értékre
beállítva
Például:
| <%@ page deferredSyntaxAllowedAsLiteral="true" %> |
Az elsőbbséggel kapcsolatos megjegyzés:
Az oldal utasítás isELIgnored és deferredSyntaxAllowedAsLiteral attribútumai
elsőbbséget élveznek a web.xml fájl megfelelő elemeivel és értékeivel
szemben.
Ezek az oldal utasítás attribútumok felülbírálják a megfelelő elemek
értékeit a web.xml fájlban.
További információkért tekintse meg a következőket: