`

tomcat 6 el表达式的问题

    博客分类:
  • Java
阅读更多

下面的这个页面在 tomcat 5.5.15里面是正确的,但是在6.0.14里面就出问题

<?xml version="1.0" encoding="GBK"?>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:jsp="http://java.sun.com/JSP/Page">

<jsp:output omit-xml-declaration="true"
doctype-root-element="html"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />

<head>
<title>error!!!</title>
</head>
<body>
<p>${true? (false?true:false):false}</p>
</body>
</html>
 



org.apache.jasper.JasperException: An exception occurred processing JSP page
/test.jspx at line 15

12: <title>error!!!</title>
13: </head>
14: <body>
15: <p>${true? (false?true:false):false}</p>
16: </body>
17: </html>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

javax.el.ELException: Error Parsing: ${true? (false?true:false):false}
org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:125)
org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:146)
org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:190)
org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:922)
org.apache.jsp.test_jspx._jspService(test_jspx.java:62)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.apache.el.parser.ParseException: Encountered "true: false" at line 1, column 16.
Was expecting one of:
"(" ...
<IDENTIFIER> ...
<NAMESPACE> <IDENTIFIER> ...

org.apache.el.parser.ELParser.generateParseException(ELParser.java:1874)
org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:1754)
org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1136)
org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1030)
org.apache.el.parser.ELParser.Value(ELParser.java:978)
org.apache.el.parser.ELParser.Unary(ELParser.java:960)
org.apache.el.parser.ELParser.Multiplication(ELParser.java:723)
org.apache.el.parser.ELParser.Math(ELParser.java:643)
org.apache.el.parser.ELParser.Compare(ELParser.java:455)
org.apache.el.parser.ELParser.Equality(ELParser.java:349)
org.apache.el.parser.ELParser.And(ELParser.java:293)
org.apache.el.parser.ELParser.Or(ELParser.java:237)
org.apache.el.parser.ELParser.Choice(ELParser.java:203)
org.apache.el.parser.ELParser.Expression(ELParser.java:183)
org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1122)
org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1030)
org.apache.el.parser.ELParser.Value(ELParser.java:978)
org.apache.el.parser.ELParser.Unary(ELParser.java:960)
org.apache.el.parser.ELParser.Multiplication(ELParser.java:723)
org.apache.el.parser.ELParser.Math(ELParser.java:643)
org.apache.el.parser.ELParser.Compare(ELParser.java:455)
org.apache.el.parser.ELParser.Equality(ELParser.java:349)
org.apache.el.parser.ELParser.And(ELParser.java:293)
org.apache.el.parser.ELParser.Or(ELParser.java:237)
org.apache.el.parser.ELParser.Choice(ELParser.java:203)
org.apache.el.parser.ELParser.Expression(ELParser.java:183)
org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:155)
org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:52)
org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:93)
org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:146)
org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:190)
org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:922)
org.apache.jsp.test_jspx._jspService(test_jspx.java:62)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

 

分享到:
评论
2 楼 hf200012 2008-07-01  
tomcat6 中对5.0中这样的判断 ${not empty command ? command.id:""}的处理变成了这样${command.id},不再需要判断了,不是他们的bug,只不过实在兼容性上有问题
1 楼 codeutil 2008-07-01  
这个是Tomcat6 的bug:
https://issues.apache.org/bugzilla/show_bug.cgi?id=42565

相关推荐

    EL表达式所用的jar包.rar

    为了在Tomcat服务器上运行包含EL表达式的JSP项目,你需要将这些jar包放入项目的`WEB-INF/lib`目录下。这样,Tomcat在加载项目时会自动扫描该目录,找到所需的类库并将其加载到应用的类路径中。如果你的项目是基于...

    tomcat5.5.28支持EL 表达式的解决方法.

    ### Tomcat 5.5.28与EL表达式的兼容性问题 Tomcat 5.5.28作为一款历史悠久的Java应用服务器,其默认配置可能并不完全支持JSP 2.0规范中的所有特性,包括EL表达式。这主要是因为Tomcat的版本与所支持的JSP版本之间...

    tomcat6.0.0报EL表达式错误

    NULL 博文链接:https://babykate.iteye.com/blog/1771952

    Tomcat 6解析EL表达式的Bug示例

    今天发现Tomcat 6.0.36版本存在一个EL表达式解析方面的bug,详细描述请参阅我的博文:http://blog.csdn.net/chaijunkun/article/details/9097229。bug演示地址/bug/show.do,避免此bug的方法演示地址/bug/avoid.do

    JSTL以及EL表达式所需jar包

    虽然EL是Java EE的一部分,但在某些情况下,如Tomcat这样的轻量级应用服务器,可能需要这个JAR来支持EL表达式。 在部署Web应用到服务器之前,确保将这两个JAR文件添加到WEB-INF/lib目录下。这样,服务器就可以识别...

    EL表达式语言 非常详细

    ### EL表达式语言详解 #### 9.1 概述 在JSP页面开发中,为了提高代码的可读性和可维护性,开发者们逐渐转向使用标签库来替代传统的Java片段语言来实现页面的显示逻辑。然而,自定义标签虽然灵活,但也容易导致重复...

    el表达式不起作用解决方案

    如果你的服务器(如Tomcat、Jetty等)版本较旧,可能不完全支持EL表达式。升级到最新稳定版本,以确保所有功能得到充分支持。 5. **验证EL表达式语法** EL表达式的语法错误也会导致问题。例如,确保变量引用正确...

    EL表达式所需要的jar包

    在Servlet容器(如Tomcat)中,这两个jar包是运行EL表达式所必需的。 使用EL表达式的主要优点包括: - **简洁性**:EL使用简单的语法,如`${object.property}`或`${expression}`,使得代码更易读,更少出错。 - **...

    EL表达式使用详解

    6. Functions:EL表达式中也可以调用在JSP页面或标签库中定义的函数。这些函数可用于执行特定的操作,如字符串处理、日期操作等。 EL表达式能够处理的数据类型包括Java基本类型及其包装类、字符串、数组、集合、Map...

    使用EL表达式时候用到的jar包

    本主题主要探讨在使用EL表达式时所依赖的jar包及其作用。 1. **JSTL (JavaServer Pages Standard Tag Library)** EL通常与JSTL一起使用,JSTL提供了一系列标准标签库,用于增强JSP页面的功能。JSTL的核心标签库(`...

    EL表达式无效问题《ZT》

    6. 如果是容器问题,考虑升级或降级至与EL表达式兼容的服务器版本。 通过上述分析,我们可以看出,解决EL表达式无效问题需要从多个角度进行排查,包括检查依赖、语法、作用域、类型转换以及服务器配置等。理解并...

    EL表达式 jsp

    在Tomcat服务器中,EL表达式默认是启用的,但在某些情况下可能需要手动配置。有以下两种方法来确保Tomcat支持并正确配置EL表达式: 1. 方法一:在每个JSP页面的顶部添加`&lt;%@ page isELIgnored="false" %&gt;`指令。这...

    Java中使用EL表达式文档

    2. **配置问题**:在某些版本的Tomcat服务器中,可能需要进行特定配置才能使EL表达式生效。例如,在JSP文件中加入`&lt;%@ page isELIgnored="false" %&gt;`指令。 3. **命名规则**:在使用EL表达式时,应避免使用EL表达式...

    EL表达式所有jar包(包含两个)

    EL表达式通常在JSP页面的JSP标签、脚本元素或者文本中使用,以${}包裹。 这个资源包包含了两个EL相关的jar包,它们可能是用于支持EL表达式解析和执行的关键库。虽然具体的jar包名称没有给出,但通常这些库可能包括...

    el表达式api.jar包

    tomcat使用EL表达式所需要的jar包,如果没有此jar包系统系统就会报错,现上传此jar包,减少大家找jar包的时间

    JSTL1.1及EL表达式中文参考手册

    **JSTL1.1及EL表达式**是Java服务器页面(JSP)开发中的重要组件,它们极大地提升了JSP的可读性和可维护性。本文将深入探讨这两个概念及其在实际开发中的应用。 **JSTL(JavaServer Pages Standard Tag Library)**...

    jstl—el表达式

    【JSTL与EL表达式详解】 JSTL(JSP Standard Tag Library)是Java服务器端的一个重要组件,主要用于简化JSP页面的编程,提供了一系列的标签库来处理常见的任务,比如数据处理、URL操作、国际化等。它由Apache ...

    el表达式 jstl

    JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet...JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。标签库目前支持四种标签:

    解析Tomcat 6、7在EL表达式解析时存在的一个Bug

    问题的核心在于,当EL表达式在进行比较操作时,Tomcat的EL解析器可能会错误地尝试将某些对象转换为不恰当的类型,导致`ELException`。 首先,让我们看看问题的具体情况。开发者在实现数据分页显示功能时,遇到了一...

Global site tag (gtag.js) - Google Analytics