Ne használjon Java kulcsszavakat a JSP és JSF kifejezések nyelvi elemeiben

Ez a szabály azokat a JSP kifejezésnyelv (EL) elemeket jelzi, amelyek olyan változóneveket tartalmaznak, amelyek Java kulcsszavakat vagy EL fenntartott szavakat tartalmaznak.

A WebSphere Application Server 8-as változattól kezdve a kifejezésnyelv-feldolgozó érvényesítése szigorúbbá vált. Az EL változóazonosítók ellenőrzésével a program meggyőződik róla, hogy azok nem tartalmaznak Java kulcsszavakat vagy EL foglalt szavakat. Ha a JSTL/EL parancsfájlban használt változóazonosító Java kulcsszavakat vagy EL foglalt szavakat használ, akkor a JSP fájl nem fordul le és futási időben com.ibm.ws.jsp.translator.JspTranslationException kivétel dobására kerül sor.

A szabály minden olyan kifejezésnyelv elemet megjelöl, amelynek változói az aktuális Java fenntartott kulcsszavak bármelyikét tartalmazzák.

A szabály a JSP foglalt szavak használatát is jelzi a változókban.

A probléma megoldásához a JSP és Java kódot módosítva küszöbölje ki a fenntartott kulcsszavak használatát. Ha ez a módosítás túl terjedelmes, akkor rendelkezésre áll egy rendszertulajdonság, amellyel a viselkedés visszaállítható a 8-as változat előtti viselkedésre. Ehhez állítsa be az org.apache.el.parser.SKIP_IDENTIFIER_CHECK JVM rendszertulajdonságot true értékre.

Az alábbi példában:
< span class="Code"> < span osztály= "indent2"> < /span> < c:if test=" ${not empty testObject}">
< átívelő osztály= "indent2"> < /span> < c:choose>
< span osztály= "indent2"> < /spanyolul > < mikor test=" ${testObject.class.name eq 'SomeValue'}"> < /span>

A ${testObject.class.name eq 'SomeValue'} kifejezésnyelv elem meg van jelölve, mert a testObject.class.name változó a class Java kulcsszót tartalmazza.

Ha nem javítják, akkor a kifejezés az alábbihoz hasonló futás közbeni hibát fog produkálni:

> code> Alkalmazás hiba
SRVE0777E: Exception thrown by application class 'com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction:515'
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0122E: Unable to parse EL function ${testObject.class.name eq 'SomeValue'}.

Ha a kifejezésnyelv-feldolgozás tiltott, akkor a JSP fájl elemei nem lesznek megjelölve.

Tiltott például a kifejezésnyelv-feldolgozás, ha az isELIgnored page utasítás true értékre van beállítva. A szabály az ezzel a direktívával megjelölt JSP fájlokban nem jelöl meg elemeket.

\tcode> < % @ oldal isELIgnored= "true " %> < /code>

A kifejezésnyelv-feldolgozás letiltható a web.xml fájl el-ignored elemével. Ebben a példában a webIgnored.jsp fájlt a szabály nem fogja megjelölni.

< jsp-config>
< span osztály= "indent2"> < /span> < jsp-property-group>
<url-pattern>webIgnored.jsp</url-pattern>
<el-ignored>igaz</el-ignored>
</jsp-property-group>
</jsp-config>

A kifejezésnyelv-feldolgozás a 2.3 vagy régebbi szervlet verziószámú világhálós modulok esetében mindig tiltott.

További információkért tekintse meg az alábbi leírásokat: