我正在尝试让JSF 2.2在GAE 1.8.7上运行。我正在学习本教程:http://java.wildstartech.com/Java-Platform-Enterprise-Edition/JavaServer-Faces/javaserver-faces-22/configuring-jsf-22-to-run-on-the-google-app-engine-using-eclipse
当我在本地运行它时,index.jsf
页面呈现得很好。
但是,当我将其部署到GAE时,正常的servlet运行良好,index.jsf
在GAE日志中显示HTTP 505错误以及以下内容:
2013-11-15 11:23:42.578 /index.jsf 500 533ms 0kb Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 module=default version=1 W
2013-11-15 11:23:42.573 /index.jsf java.lang.NoSuchMethodError: javax.el.ELContext.notifyBeforeEvaluation(Ljava/lang/String;)V
at com.sun.el.lang.EvaluationContext.notifyBef
2013-11-15 11:23:42.577 Uncaught exception from servlet java.lang.NoSuchMethodError: javax.el.ELContext.notifyBeforeEvaluation(Ljava/lang/String;)V
at com.sun.el.lang.Evalua
我正在使用maven存储库中的javax-faces.2.2.0.jar
和javax-el.3.0.0.jar
。
答案 0 :(得分:0)
如果你真的不需要EL 3.x功能,那么我建议你转移到2.x版本然后在你的web.xml文件中指定它作为上下文参数:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
上述声明将确保您使用随代码一起提供的EL版本,而不是GAE / J容器提供的版本。
不要忘记在库中包含EL实现jar。
p.s。:如果它有任何帮助,我在GitHub上有一个starter template可以帮助你开始。