代码之家  ›  专栏  ›  技术社区  ›  Debajit

JSF面对WEB-INF之外的配置文件?

  •  6
  • Debajit  · 技术社区  · 15 年前

    创建多个faces配置文件时,将faces-config.xml放在WEB-INF之外是否正确?jsf规范对此似乎不是很清楚(第10.1.3节)

    如果是,应该如何在web.xml中声明faces-config.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”的值是否正确?

    3 回复  |  直到 15 年前
        1
  •  7
  •   David Rabinowitz    15 年前

    这是可能的,但不推荐。将配置文件放在WEB-INF下的原因是服务器知道不提供这些文件—您有自己的代码、数据库配置和其他敏感的东西。

    不能使用“/webcontent/WEB-INF/faces-config2.xml”-afaik“webcontent”是特定于eclipse的。使配置文件名在war中是绝对的。这意味着它们总是以“/WEB-INF/”开头。

        2
  •  1
  •   harto    15 年前

    正如david的回答中提到的,不建议将配置文件放在WEB-INF目录之外。但是,如果您正在寻找组织项目的方法,则可以尝试创建新的子目录 在下面 Web-Fin

    例如,当我处理很多faces配置文件时,我将创建一个目录 /WEB-INF/config 把faces的配置文件放进去。

        3
  •  0
  •   Billy Bob Bain    15 年前

    如果您是从web.xml引用它们,那么该文件需要在运行时处于war中。容器还有其他方法可以发现FACES-CONTION.XML资源。

    104.2 在应用程序启动时,在处理任何请求之前,jsf实现必须 处理零个或多个应用程序配置资源,其位置如下 算法:

    • 在中搜索名为META-INF/faces-config.xml的所有资源 这个web应用程序的servletcontext资源路径,并将每个路径作为jsf加载 配置资源(按返回顺序的相反顺序 当前线程ContextClassloader上的getResources()。

    • 检查是否存在名为 javax.faces.config_文件。如果它存在,则将其视为逗号分隔的 上下文相关资源路径(以/开头),并加载每个指定的 资源。

    • 检查是否存在名为–156;/webinf的web应用程序配置资源/ 面向config.xml,如果资源存在,则加载它。

    推荐文章