错误信息如下:
- Caused by: javax.el.ELException: The identifier [default] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier). This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true.
- at org.apache.el.parser.AstDotSuffix.setImage(AstDotSuffix.java:46)
- at org.apache.el.parser.ELParser.DotSuffix(ELParser.java:1069)
- at org.apache.el.parser.ELParser.ValueSuffix(ELParser.java:1035)
- at org.apache.el.parser.ELParser.Value(ELParser.java:980)
- at org.apache.el.parser.ELParser.Unary(ELParser.java:950)
- at org.apache.el.parser.ELParser.Multiplication(ELParser.java:714)
- at org.apache.el.parser.ELParser.Math(ELParser.java:634)
- at org.apache.el.parser.ELParser.Compare(ELParser.java:446)
- at org.apache.el.parser.ELParser.Equality(ELParser.java:340)
- at org.apache.el.parser.ELParser.And(ELParser.java:284)
- at org.apache.el.parser.ELParser.Or(ELParser.java:228)
- at org.apache.el.parser.ELParser.Choice(ELParser.java:185)
- at org.apache.el.parser.ELParser.Expression(ELParser.java:177)
- at org.apache.el.parser.ELParser.Function(ELParser.java:1263)
- at org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1189)
- at org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1019)
- at org.apache.el.parser.ELParser.Value(ELParser.java:968)
- at org.apache.el.parser.ELParser.Unary(ELParser.java:950)
- at org.apache.el.parser.ELParser.Multiplication(ELParser.java:714)
- at org.apache.el.parser.ELParser.Math(ELParser.java:634)
- at org.apache.el.parser.ELParser.Compare(ELParser.java:446)
- at org.apache.el.parser.ELParser.Equality(ELParser.java:340)
- at org.apache.el.parser.ELParser.And(ELParser.java:284)
- at org.apache.el.parser.ELParser.Or(ELParser.java:228)
- at org.apache.el.parser.ELParser.Choice(ELParser.java:185)
- at org.apache.el.parser.ELParser.Expression(ELParser.java:177)
- at org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:149)
- at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:46)
- at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:115)
- ... 98 more
分析:从上述的错误日志来看,是特定的el方法找不到。其中提到了 the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true。
经过从网上查了一下,方才得知,在新的tomcat中,比如我当前使用的Tomcat7中,tomcat对El中的语法进行了更为严格的检查,所以才产生了上述的错误信息。
解决办法:
$CATALINA_BASE/conf/catalina.properties 增加
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true
可能出现上述情况的系统:
使用老版本的tomcat没有问题,当切换到新的tomcat版本之时,出现了系统可以正常启动,但是页面的内容无法显示的问题,可以查看一下系统日志,通过日志即可知道是否有上述类似的问题。