为什么我在Tomcat上运行时在我的jsf页面中看到#{UserBean.userName}但它在Glassfish上工作正常

时间:2011-03-11 04:38:07

标签: jsf tomcat glassfish el

我正在使用Richfaces 3.3.3和Glassfish开发应用程序。它可以正常工作。现在我接到了将它移植到Tomcat 6/7的电话。                 因此,当我在Netbeans 6.9.1上更改运行时服务器并运行应用程序时,我看到了#{UserBean.userName}以及所有类似的表达式,尽管它们的值已经过评估。我尝试了所有罐子组合,但仍然无法弄清楚。请帮忙。

2 个答案:

答案 0 :(得分:0)

看起来面部servlet的servlet映射无法正常工作。也许你必须调整你的web.xml。但是,据我所知,在Glassfish和Tomcat中,faces servlet的配置是相同的。

另一个原因可能是您的tomcat服务器无法访问jsf jar文件。

查看herehere

答案 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一样工作。

然而,服务器启动日志应该已经暗示了这一点。