现在需要faces-config.xml和web.xml吗?

时间:2018-05-24 14:03:53

标签: jsf web.xml faces-config jsf-2.3 java-ee-8

我一直在研究JavaEE8并练习一些项目,了解Servlet 4.0和JSF 2.3等新技术。我在很多论坛和网页上都看到了,有些我认为他们说web.xmlfaces-config.xml不是必需的,因为现在使用了注释,但在其他一些论坛中他们继续使用它们。

在哪种情况下,您应该继续使用Web部署描述符 - > web.xml和应用程序配置资源文件 - > faces-config.xml

2 个答案:

答案 0 :(得分:1)

它们不是必需的,但我强烈建议您使用它们,因为无论如何您迟早都需要它们来进行其他配置。

注释用于实现更好的可读性并简化faces-config.xmlweb.xml,但它们甚至几乎不允许在配置文件中进行配置选项。 例如,您可以使用@FacesValidator注释,而不是在faces-config.xml中声明和引用相应的类。

使用注释无法实现的任务将是欢迎页面的声明。如果要指定它,则需要web.xml

答案 1 :(得分:0)

在使用web.xmlfaces-config.xml文件时,我在JSF 2.3的Mojarra实现中发现了一个特定问题。在此实现的代码中,ELUtils类具有以下条件:

if (getFacesConfigXmlVersion(facesContext).equals("2.3") || getWebXmlVersion(facesContext).equals("4.0")) {
                throw new FacesException("Unable to find CDI BeanManager");
}

抛出异常:"无法找到CID BeanManager"。我只有faces-config.xml文件,在命名空间中指定了最新版本的JSF,我抛出了异常。

要避免此问题,您可以在faces-config.xml文件中指定不同版本的JSF(2.3之前),并指定web.xml文件的不同版本(4.0之前),或者根本不指定添加任何这些配置文件。就我而言,我删除了faces-config.xml并毫无问题地运行了应用程序。

我希望Mojarra的实施能解决这个细节。