在JSF 1.2中使用动态生成的bundle

时间:2012-03-14 14:18:58

标签: java jsf

我的网络应用程序需要动态创建的ResourceBundle。是否有可能以某种方式将其推入FacesContext(或其他任何地方),以便以后可以从视图中获得静态RB?例如:

<h:outputText value="#{myDynaBundle['key.inside.dynamic.rb']}" />

静态RB我的意思是在app-config.xml中定义的包,例如:

<resource-bundle>
    <base-name>messages</base-name>
    <var>msg</var>
</resource-bundle>

1 个答案:

答案 0 :(得分:2)

创建一个extends ResourceBundle的类,并使其成为托管bean。

E.g。

public class MyDynaBundle extends ResourceBundle {

    @Override
    protected Object handleGetObject(String key) {
        // Implement bundle value retrieval by key.
    }

    @Override
    public Enumeration<String> getKeys() {
        // If necessary, implement retrieval of all valid keys.
    }

}

注册为

<managed-bean>
    <managed-bean-name>myDynaBundle</managed-bean-name>
    <managed-bean-class>com.example.MyDynaBundle</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>