7

默认情况下,当我们创建 Web 应用程序时faces-config.xml不会自动创建。我们必须手动创建他,据我所知,faces-config.xml必须严格位于WEB-INF.

所以,我的问题:

我必须faces-config.xmlweb.xml创建后WEB-INF或其他文件夹中注册还是自动注册。即JSF“知道”什么是faces-config.xml并且可以在所有项目的文件夹中找到他。

希望,我问了正确的问题。;)

4

1 回答 1

21

取自FacesServlet文档:

如果未在 web.xml 或 web-fragment.xml 中显式映射并且满足以下一个或多个条件,则必须自动映射此 servlet。

  • 在 WEB-INF 中找到 faces-config.xml 文件。

  • faces-config.xml 文件位于应用程序类路径中 jar 的 META-INF 目录中。

  • 以 .faces-config.xml 结尾的文件名位于应用程序类路径中 jar 的 META-INF 目录中。

  • javax.faces.CONFIG_FILES 上下文参数在 web.xml 或 web-fragment.xml 中声明。

  • 传递给 ServletContainerInitializer 实现的 onStartup() 方法的类 Set 不为空。

您可以将配置文件放在 webapp 的其他位置,但您需要记住以下事实:

  1. 您不想公开文件以供访问,因此您希望它最终位于WEB-INF/META-INF文件夹下;
  2. 您需要将以下条目添加到您的 web.xml:

    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>
            WEB-INF/path/to/faces-config.xml
       </param-value>
    </context-param>
    

否则,如果在某些预定义位置找到 faces-config.xml,则会自动加载。

于 2013-12-07T12:01:16.033 回答