Nu utilizaţi cuvinte cheie Java în elementele limbajului de expresii JSP şi JSF

Această regulă semnalează elementele limbajului de expresii (EL) JSP care conţin variabile cu nume care conţin cuvinte cheie Java sau cuvinte rezervate EL.

Începând cu WebSphere Application Server Versiunea 8, validarea procesorului EL (expression language) devine mai strictă. Identificatorii de variabilă EL sunt verificaţi pentru a nu conţine cuvinte cheie Java sau cuvinte rezervate EL. Dacă un identificator de variabilă utilizat într-un script JSTL/EL include fie cuvinte cheie Java, fie cuvinte rezervate EL, fişierul JSP nu va fi translatat şi este aruncată o com.ibm.ws.jsp.translator.JspTranslationException la momentul rulării.

Această regulă va semnala orice element de limbaj de expresie care conţine variabile care includ oricare din setul curent de cuvinte cheie rezervate Java.

Regula va semnala de asemenea utilizarea cuvintelor rezervate JSP în variabile.

Problema poate fi rezolvată prin modificarea codului JSP şi Java pentru a elimina utilizarea cuvintelor rezervate JSP. Dacă această modificare are o întindere prea mare, este disponibilă o proprietate sistem pentru revenirea la comportamentul anterior Versiunii 8. Setaţi proprietatea JVM org.apache.el.parser.SKIP_IDENTIFIER_CHECK la valoarea true pentru a reveni la comportamentul anterior.

În exemplul următor:
< span class="Code"> < span class= "indent2" > < /span> < c:daca test=" ${not empty testObject}" >
< span class= "indent2" > < /span> < c:choose>
< span class= "indent2" > < /span> < c:when test=" ${testObject.class.name eq 'SomeValue'}" > < /span>

Elementul limbajului de expresii ${testObject.class.name eq 'SomeValue'} este semnalat deoarece testObject.class.name conţine cuvântul cheie Java class.

Dacă nu este corectată, această expresie va produce o eroare la momentul rulării, similară cu:

< code> Eroare de aplicare
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'}.

Dacă procesarea limbajului de expresii este dezactivată, elemente din fişierul JSP nu vor fi semnalate.

De exemplu, procesarea limbajului de expresii este dezactivată când directiva isELIgnored page este setată la true. Regula nu semnalează elementele dintr-un fişier JSP marcat cu această directivă.

< code> <% @ page isELIgnored= "true " %> < /code>

Procesarea limbajului de expresii poate fi de asemenea dezactivată utilizând elementul web.xml, el-ignored. În acest exemplu, webIgnored.jsp nu va fi semnalat de această regulă.

< jsp-config>
< span class= "indent2" > < /span> < jsp-property-group>
<url-pattern>webIgnored</url-pattern>
<el-ignored>adevărat</el-ignored>
</jsp-property-group>
</jsp-config>

Procesarea limbajului de expresii este întotdeauna dezactivată pentru module web la versiunea de Servlet 2.3 sau mai mică.

Pentru informaţii suplimentare, vedeţi