今天部署SSH项目的时候发现一个非常奇怪的问题,项目在tomcat6.0上无任何问题,但把项目部署到服务器的tomcat7上的时候出现了javax.el.ELException 。
起初还以为是jar包没有配置正确、jstl与standard的版本问题或tomcat6.0 web.xml没有配置正确,可是各种解决方法尝试后依然不成功。后来发现错误只存在于嵌套的cforeach循环中。在搜索资料对比tomcat6.0与tomcat7.0的区别和查询一些文章之后,发现:
tomcat 7对EL表达式的语法要求比较严格,例如"${owner.new}"因包含关键字new就会导致解析出错。
而我正好在嵌套的foreach循环中使用了new关键字。。。。
怎么解决呢?有三种,如下:
第一种:严格遵守java规范,修改对象的属性名称,要求不包含java关键字;
第二种:修改EL表达式,例如"${owner.new}"可以修改为"${owner[‘new‘]}";
第三种:修改tomcat属性,忽略对EL表达式的关键字检查。修改$CATALINA_BASE/conf/catalina.properties文件,添加org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true选项。
原文出自:
http://www.myexception.cn/h/810255.html
参考文档:
http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html#Expression_Language
时间: 2024-10-10 17:05:57