gpt4 book ai didi

java - 使用 faces-config.xml 初始化 JSF bean

转载 作者:行者123 更新时间:2023-12-02 00:38:26 26 4
gpt4 key购买 nike

我有一个名为Bucket的Bean,它有一个HashMap。我想初始化 bean 并使用属性文件填充 faces-config.xml 中的 HashMap。我怎样才能做到这一点?

bean :

public class BundleBean {
private Map<String, String> bundlePropertiesMap = new HashMap<String, String>();
private String bundleFileName;

// Setter, getter goes here....
}

属性文件,名为bundle.properties,位于类路径中。

bucket.id=DL_SERVICE

faces-config.xml 文件:

<managed-bean>
<description>
Java bean class which have bundle properties.
</description>
<managed-bean-name>bundleBean</managed-bean-name>
<managed-bean-class>org.example.view.bean.BundleBean</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>bundleFileName</property-name>
<value>bundle.properties</value>
</managed-property>
</managed-bean>

该映射必须以bucket.id作为键,以DL_SERVICE作为值。

感谢高级~

最佳答案

假设属性文件与 BundleBean 位于相同的 ClassLoader 上下文中,请调用如下方法:

@SuppressWarnings("unchecked")
private void loadBundle(String bundleFileName, Map<String, String> map)
throws IOException {
InputStream in = BundleBean.class.getResourceAsStream(bundleFileName);
try {
Properties props = new Properties();
props.load(in);
((Map) map).putAll(props);
} finally {
in.close();
}
}

最好使用@PostConstruct注释来调用。如果这不是一个选项,请在 bundleFileName setter 中调用它,或者在 bundlePropertiesMap getter 中执行惰性检查。

关于java - 使用 faces-config.xml 初始化 JSF bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com