我正在使用Richfaces 3.3.3和Glassfish开发应用程序。它可以正常工作。现在我接到了将它移植到Tomcat 6/7的电话。 因此,当我在Netbeans 6.9.1上更改运行时服务器并运行应用程序时,我看到了#{UserBean.userName}以及所有类似的表达式,尽管它们的值已经过评估。我尝试了所有罐子组合,但仍然无法弄清楚。请帮忙。
答案 0 :(得分:0)
看起来面部servlet的servlet映射无法正常工作。也许你必须调整你的web.xml。但是,据我所知,在Glassfish和Tomcat中,faces servlet的配置是相同的。
另一个原因可能是您的tomcat服务器无法访问jsf jar文件。
答案 1 :(得分:0)
我假设JSF标签工作正常,否则你没有在webbrowser的页面中看到EL plain,所以FacesServlet
部分没问题。否则它在Glassfish中工作也会很奇怪。缺少JSF JAR只会导致HTTP 500错误,并且异常抱怨在加载FacesServlet
时类路径中缺少JSF库。
因此,JSF中的EL不起作用。如果找不到JSF EL工厂,就会发生这种情况。如果您在web.xml
中声明了“自定义”JSF EL工厂,但是该工厂在webapp的类路径中不存在,则会发生这种情况。它在Glassfish中有效只能意味着您在web.xml
中有以下内容。
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
摆脱它。 Tomcat没有附带Glassfish特定的EL实现。 Tomcat已经附带了自己的EL实现,它应该像Glassfish一样工作。
然而,服务器启动日志应该已经暗示了这一点。