当创建多个面配置文件,它是正确的有WEB-INF之外的faces-config.xml中? 在JSF规范似乎并没有被这个很清楚(第10.1.3节)
如果是,如何把这个faces-config.xml中要在web.xml中声明? 通过IDE的(如Eclipse /的jdev)通常使用类似产生的路径:
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config1.xml</param-value>
</context-param>
现在,如果我的faces-config.xml中超出WEB-INF - 是正确申报帕拉姆价值的东西,如“/WebContent/WEB-INF/faces-config2.xml”?
这是可能的,但不建议使用。 你把配置文件下的WEB-INF的原因是服务器知道不为这些文件 - 你有你的代码,数据库配置和有其他敏感的东西。
不能使用“/WebContent/WEB-INF/faces-config2.xml” - 据我所知“的WebContent”是日食具体。 有配置文件名是WAR中绝对的。 这意味着,他们将始终以“/ WEB-INF /”开头。
正如大卫的答复中提到,我们不推荐把配置文件的WEB-INF目录之外。 不过,如果你正在寻找方法来组织你的项目,你可以尝试创建WEB-INF 下一个新的子目录。
例如,当我处理很多的面孔,配置文件,我将创建一个目录/WEB-INF/config
,把面孔,配置文件在那里。
如果你是从web.xml中引用它们,然后将文件需要在运行时的战争。 有迹象表明,容器可以发现faces-config.xml中资源的其他方式。
10.4.2在应用程序启动时,被处理的任何请求之前,JSF实现必须处理零个或多个应用程序的配置资源,根据下面的算法位于:
搜索名为所有资源“META-INF / faces-config.xml中”在此Web应用程序ServletContext中资源的路径,并加载每个作为JSF配置资源(在其中它们通过getResources返回的顺序相反的顺序()对当前线程的ContextClassLoader)。
检查名为javax.faces.CONFIG_FILES上下文初始化参数的存在。 如果它存在,把它作为一个逗号分隔的上下文相对资源路径列表(以“/”开始),和装载每个specfied资源。
检查名为“/ WEB-INF / faces-config.xml中” Web应用程序配置资源的存在,如果存在,资源加载它。