21. März 2007

Expression Language not supported in compile time

Problem: Die Ausdruckssprache wird im compile time-Attribut items nicht unterstützt, Expression Language not supported in compile time
Mögliche andere Fehlermeldung: ExpressionEvaluatorManager JasperException

Lösung:

a)
isELIgnored="true" in der Page directive der jsp:
<%@ page contentType="text/html;charset=windows-1252" isELIgnored="true" %>
b)
oder in der web.xml folgenden Eintrage hinzu:

<jsp-config>
<jsp-property-group>
<display-name>Ignore EL</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>


Ursache:

Defaulteinstellung:
  • für JSP-Seiten ab Servlet 2.4 : EL evaluieren
  • für JSP-Seiten bis einschl. Servlet 2.3 : EL ignorieren
Die EL wird erst mit JSP 2.0 ausgeliefert, kann aber auch mit JSP 1.2 betrieben werden, dann werden einige JARs benötigt (jstl.jar, …)

Es gibt älter Taglibs, die eine EL-Syntax für ihre Attribute verwenden. Diese wird bis Servlet 2.3 vom JSP-Compiler ignoriert. Wird die JSP, die diese Taglib enthält nun unter einem Servlet-Container >2.4 betrieben, tritt dieser Fehler auf. Die EL-Syntax darf bei diesen älteren Taglibs aber nicht vom JSP-Compiler evaluiert werden. Die Libs stellen eigene Logik dafür bereit.
Daher muss das Evaluieren von EL-Syntax deaktiviert werden.

Links:
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html
http://blogs.oracle.com/Didier/JSTL_1_JSP_2