论坛首页 入门技术论坛

tomcat 6 el表达式的问题

浏览 4089 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-07-01  

下面的这个页面在 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)

 

   发表时间:2008-07-01  
这个是Tomcat6 的bug:
https://issues.apache.org/bugzilla/show_bug.cgi?id=42565
0 请登录后投票
   发表时间:2008-07-01  
tomcat6 中对5.0中这样的判断 ${not empty command ? command.id:""}的处理变成了这样${command.id},不再需要判断了,不是他们的bug,只不过实在兼容性上有问题
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics