我目前正在使用Vaadin 7创建一个Web应用程序。我的问题是我有一个我想为其提供标签的OptionGroup。 OptionGroup的项目是枚举值。我希望这些项标签使用java resourcebundle进行国际化,因此每个枚举值都有一个作为构造函数参数给出的键。 bean使用这个键来获取当前语言环境的翻译(嗯...... bean保存当前语言环境,所以即使我在枚举中使用Messages类本身来获取翻译,我也需要它)。
我现在的问题是,我无法找到一种方法将此翻译用作OptionGroup的标签,因为我可以使用toString()(这是不可能的,因为我需要将翻译bean作为传递方式传递给参数)或getDisplayString(param)方法(当然接受bean,但不能被OptionGroup调用)。
作为示例,请参阅以下代码段
枚举:
public enum Gender {
MALE(Messages.MALE), FEMALE(Messages.FEMALE);
private String i18nKey;
private Gender(String i18nKey) {
this.i18nKey = i18nKey;
}
public String getDisplayString(TranslationBean bean) {
return bean.getString(i18nKey);
}
}
创建选项组
OptionGroup optionGroup = new OptionGroup();
optionGroup.addItems(Gender.values());
optionGroup.setItemCaptionMode(ItemCaptionMode.PROPERTY);
optionGroup.setItemCaptionPropertyId("displayString"); //hoped this would call the corresponding method but it doesn't
我想必须有办法做到这一点。我会优先保留一个bean来进行翻译,但如果没有其他方法可以做到,我可以改变它。
提前致谢!