Ta reguła oznacza elementy języka wyrażeń (Expression Language – EL) JSP, które uwzględniają zmienne o nazwach zawierających słowa kluczowe języka Java lub zastrzeżone słowa kluczowe języka wyrażeń.
Począwszy od wersji WebSphere Application Server 8 sprawdzanie poprawności
procesora języka wyrażeń stało się bardziej rygorystyczne. Identyfikatory
zmiennych języka wyrażeń są sprawdzane pod kątem obecności słów kluczowych
języka Java lub zastrzeżonych słów języka wyrażeń. Jeśli identyfikator
zmiennej używanej w skrypcie JSTL/EL uwzględnia słowa kluczowe języka Java
lub zastrzeżone słowa języka wyrażeń, plik JSP nie zostanie poddany translacji
i w czasie wykonywania zostanie zgłoszony wyjątek
com.ibm.ws.jsp.translator.JspTranslationException.
Ta reguła oznaczy każdy element języka wyrażeń, który uwzględnia zmienne zawierające dowolne słowo z bieżącego zestawu zastrzeżonych słów kluczowych języka Java.
Ta reguła oznaczy również zastrzeżone słowa JSP używane w zmiennych.
Ten problem można rozwiązać, modyfikując kod JSP i Java tak, aby
wyeliminować używane zastrzeżone słowa kluczowe. Jeśli taka zmiana
jest zbyt czasochłonna, dostępna jest właściwość systemowa umożliwiająca
przywrócenie zachowania obowiązującego przed wersją 8. Jako wartość
właściwości systemowej maszyny JVM
org.apache.el.parser.SKIP_IDENTIFIER_CHECK
ustaw łańcuch true, aby przywrócić wcześniejsze zachowanie.
${testObject.class.name eq 'JakaśWartość'}
zostanie oznaczony, ponieważ zmienna
testObject.class.name
zawiera słowo kluczowe języka Java
class.
Jeśli nie zostanie to poprawione, wyrażenie wygeneruje błąd w czasie wykonywania podobny do poniższego:
Jeśli przetwarzanie języka wyrażeń zostanie wyłączone, elementy w pliku JSP nie zostaną oznaczone.
Na przykład przetwarzanie języka wyrażeń jest wyłączone,
gdy łańcuch true jest ustawiony jako wartość
dyrektywy isELIgnored
page. Reguła nie oznaczy elementów w pliku JSP oznaczonych tą
dyrektywą.
Przetwarzanie języka wyrażeń można również wyłączyć przy użyciu
elementu web.xml el-ignored. W poniższym przykładzie
plik webIgnored.jsp nie zostanie oznaczony przez tę regułę.
Przetwarzanie języka wyrażeń jest zawsze wyłączone w przypadku modułów WWW w serwlecie w wersji 2.3 lub niższej.
Informacje dodatkowe: