如何从 JSF 的 /WEB-INF 文件夹中获取属性文件?

Posted

技术标签:

【中文标题】如何从 JSF 的 /WEB-INF 文件夹中获取属性文件?【英文标题】:How to get properties file from /WEB-INF folder in JSF? 【发布时间】:2011-01-09 12:13:00 【问题描述】:

我在/WEB-INF 中有一些属性文件。我想将它加载到 JSF 托管 bean 中。有什么办法吗?

【问题讨论】:

【参考方案1】:

使用 ExternalContext#getResource()ExternalContext#getResourceAsStream() 在其中传递 webcontent-relative 路径。

例如:

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Properties properties = new Properties();
// ...
properties.load(externalContext.getResourceAsStream("/WEB-INF/file.properties"));

这在幕后代表ServletContext#getResource()/getResourceAsStream()

另见:

Where to place and how to read configuration resource files in servlet based application?

【讨论】:

能否给我一个提示,ExternalContext 的子类是哪些类(ExternalContext 是抽象的)或者从哪里获取 externalContext 对象? @LukaszCzerwinski : ExternalContext externalContext = facesContext.getExternalContext();【参考方案2】:
     String path="/WEB-INF/list.properties";

    InputStream is=FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(path);
    InputStreamReader r = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(r);

【讨论】:

【参考方案3】:

把它放在WEB-INF/classes 中。这是类路径的一部分。

【讨论】:

...顺便说一句,ExternalContext#getResource() 方法不需要。

以上是关于如何从 JSF 的 /WEB-INF 文件夹中获取属性文件?的主要内容,如果未能解决你的问题,请参考以下文章

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

jsf 2.2 获取属性文件的路径

如何引用 JAR 文件中提供的 JSF 托管 bean?

JSF 2 - 如何使用 JSF EL 从 web.xml 获取上下文参数值?

如何避免用户访问 JSF 中的 .xhtml 页面?

如何从 JSF/ADF 验证器中获取旧值?