默认情况下,当我们创建Web应用程序faces-config.xml
时,不会自动创建。我们必须手动创建他,据我所知,faces-config.xml
必须严格位于WEB-INF
。
所以,我的问题:
我是否必须在faces-config.xml
或其他文件夹中创建后web.xml
注册WEB-INF
或自动注册。即JSF"知道"什么是faces-config.xml
,可以在所有项目的文件夹中找到他。
希望,我问了正确的问题。;)
答案 0 :(得分:19)
取自FacesServlet
文档:
如果未在web.xml或web-fragment.xml中显式映射此servlet,并且满足以下一个或多个条件,则必须自动映射此servlet。
在WEB-INF中可以找到faces-config.xml文件。
可以在应用程序类路径中的jar的META-INF目录中找到faces-config.xml文件。
以.faces-config.xml结尾的文件名位于应用程序类路径中jar的META-INF目录中。
javax.faces.CONFIG_FILES上下文参数在web.xml或web-fragment.xml中声明。
传递给ServletContainerInitializer实现的onStartup()方法的类集不为空。
您可以将配置文件放在webapp的其他位置,但需要记住以下事实:
WEB-INF
/ META-INF
个文件夹下; 您需要将以下条目添加到您的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,则会自动加载。