Jsf 资源束中的占位符

Jsf 资源束中的占位符,jsf,jakarta-ee,jsf-2,resourcebundle,Jsf,Jakarta Ee,Jsf 2,Resourcebundle,我需要一些自动填充资源包的占位符 我的应用程序的用户有两种可能的配置,例如“1”和“2”。根据此配置,应返回具有正确值的条目 我知道,条件是可能的: currentConfig=The configuration is currently the {0,choice,0#first|1#second} 在my faces-config.xml中,资源包配置为在JSF中访问 现在,我想在JSF中获得这个值,而不指定参数: <h:outputText value="#{res.current

我需要一些自动填充资源包的占位符

我的应用程序的用户有两种可能的配置,例如“1”和“2”。根据此配置,应返回具有正确值的条目

我知道,条件是可能的:

currentConfig=The configuration is currently the {0,choice,0#first|1#second}
在my faces-config.xml中,资源包配置为在JSF中访问

现在,我想在JSF中获得这个值,而不指定参数:

<h:outputText value="#{res.currentConfig}"/>

这可以独立于JSF页面实现吗?

您可以用自己的方式实现从资源包获取文本。例如,您可以在某些managedbean中创建这样的方法:

public String getCongiurationText() {
    FacesContext context = FacesContext.getCurrentInstance();
    Locale locale = context.getViewRoot().getLocale();
    ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
    String msg = bundle.getString("currentConfig");

    Integer value = 1;

    return MessageFormat.format(msg, getConfiguration());
}
然后在输出文本中:

<h:outputText value="#{someUtilBean.getCongiurationText()}" />


通过这种方法,您可以获得独立于JSF页面的消息。因此,在每个页面中指定相同的方法,但根据配置,它会显示不同的文本。当然,可以通过不同的方式获得配置,但这取决于您希望如何处理它。

谢谢您的回复,但我不想更改我的JSF文件。最好的方法是从JSF文件全局定制资源的调用。
<h:outputText value="#{someUtilBean.getCongiurationText()}" />