今天部署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
新聞熱點
疑難解答