Vaadin使用枚举对OptionGroup标签进行国际化

时间:2017-02-27 18:41:31

标签: java internationalization vaadin

我目前正在使用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来进行翻译,但如果没有其他方法可以做到,我可以改变它。

提前致谢!

0 个答案:

没有答案