https://issues.apache.org/bugzilla/show_bug.cgi?id=56185

            Bug ID: 56185
           Summary: Jasper to compile compile complicated EL expression
           Product: Tomcat 8
           Version: 8.0.3
          Hardware: PC
            Status: NEW
          Severity: regression
          Priority: P2
         Component: EL
          Assignee: dev@tomcat.apache.org
          Reporter: serge....@gmail.com

The following jsp fails to compile: 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>
<jsp:useBean id="myBean" scope="request" class="com.MyBean"/>
<c:if test="${(myBean.int1 > 1 and myBean.myBool) or ((myBean.myBool or
myBean.myBool1) and myBean.int1 > 1)}">Hello world</c:if>

If I simplify test expression to: (myBean.int1 > 1 and myBean.myBool) or
(myBean.myBool and myBean.int1 > 1) i.e. replace (myBean.myBool or
myBean.myBool1) with myBean.myBool, then compilation will work.

It looks like Jasper cannot compile EL expressions with depth that is higher
than a certain value (4?)

Exception as follows
org.apache.jasper.JasperException: /testCompile.jsp (line: 26, column: 0)
"${(myBean.int1 > 1 and myBean.myBool) or ((myBean.myBool or myBean.myBool) and
myBean.int1 > 1)}" contains invalid expression(s): javax.el.ELException: Failed
to parse the expression [${(myBean.int1 > 1 and myBean.myBool) or
((myBean.myBool or myBean.myBool) and myBean.int1 > 1)}]
   
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
   
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:276)
.....

Works properly in Tomcat 6 and Tomcat 7.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to