JSF面临的WEB-INF之外的配置文件?(JSF faces config file outsid

2019-07-04 08:36发布

当创建多个面配置文件,它是正确的有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”?

Answer 1:

这是可能的,但不建议使用。 你把配置文件下的WEB-INF的原因是服务器知道不为这些文件 - 你有你的代码,数据库配置和有其他敏感的东西。

不能使用“/WebContent/WEB-INF/faces-config2.xml” - 据我所知“的WebContent”是日食具体。 有配置文件名是WAR中绝对的。 这意味着,他们将始终以“/ WEB-INF /”开头。



Answer 2:

正如大卫的答复中提到,我们不推荐把配置文件的WEB-INF目录之外。 不过,如果你正在寻找方法来组织你的项目,你可以尝试创建WEB-INF 一个新的子目录。

例如,当我处理很多的面孔,配置文件,我将创建一个目录/WEB-INF/config ,把面孔,配置文件在那里。



Answer 3:

如果你是从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应用程序配置资源的存在,如果存在,资源加载它。



文章来源: JSF faces config file outside WEB-INF?