Jsf 2 如何使用动态创建的密钥访问ResourceBundle条目?
在我的ResourceBundle中,我有如下条目:Jsf 2 如何使用动态创建的密钥访问ResourceBundle条目?,jsf-2,internationalization,el,facelets,resourcebundle,Jsf 2,Internationalization,El,Facelets,Resourcebundle,在我的ResourceBundle中,我有如下条目: datasourcegroup.KUNDEN=Kunden datasourcegroup.INKASSO=Inkasso datasourcegroup.INTERESSENTEN=Interessenten datasourcegroup.WARN=Warnadressen 键名的大写部分实际上是相关枚举类型的值: public enum DatasourceGroup { KUNDEN, INKASSO, IN
datasourcegroup.KUNDEN=Kunden
datasourcegroup.INKASSO=Inkasso
datasourcegroup.INTERESSENTEN=Interessenten
datasourcegroup.WARN=Warnadressen
键名的大写部分实际上是相关枚举类型的值:
public enum DatasourceGroup {
KUNDEN,
INKASSO,
INTERESSENTEN,
WARN;
}
现在,在我的Facelets页面中,我想访问这些条目,如果我使用静态键名访问这些条目,这不是一个问题,如下所示:
<h:outputText value="#{msg['datasourcegroup.KUNDEN']}" />
但我真正想做的是从一个变量中获取keyname的大写部分,所以“语义上”应该是这样的:
<h:outputText value="#{msg['datasourcegroup.#{sessionBean.datasourceGroup}']}" />
但据我所知,这是不可能的,因为EL表达式不能嵌套
有什么建议我可以这样做吗
提前谢谢
问候
马里奥
编辑这是我使用的解决方案:
public String getDatasourceGroupLabel(DatasourceGroup group) {
return "datasourcegroup."+group.toString();
}
<h:outputText value="#{msg[sessionBean.getDatasourceGroupLabel(group)]}" />
公共字符串getDatasourceGroupLabel(DatasourceGroup组){
返回“datasourcegroup.+group.toString();
}
不能嵌套EL,但可以通过javamethod或via连接字符串。只要确保正确地完成了测试。因此,类似于{msg[''''datasource.'.concat(sessionBean.datasourceGroup).concat(''''''''''''')}
或{msg[sessionBean.concatatedatasourcegroup]}
,后者返回'datasourceGroup.KUNDEN'
(两个代码段均未经测试)将有效,谢谢!我用了第二种方法。第一个对我不起作用,我也不知道如何修复它。这句话让我头晕目眩:-)。。。