直接在枚举中使用Wicket属性

时间:2015-09-16 07:35:52

标签: java properties enums wicket

我有一个看起来像这样的枚举:

package de.test;

public enum TestEnum {
    bar("Test");

    private final String label;

    private TestEnum(String labelName) {
        this.label = labelName;
    }

    public String getLabel() {
        return label;
    }
}

我想存储字符串"测试"在Java属性文件中。枚举" TestEnum"应该存储属性键及其" getLabel"方法应该在属性文件中查找适当的值并返回该值。

package de.test;

public enum TestEnum {
    bar("test.key");

    private final String label;

    private TestEnum(String labelKey) {
       this.label = labelKey;
    }

    public String getLabel() {
        // Look up properties value with label as key in the according properties file
        String labelValue = ...
        return labelValue;
    }
}

我有一个如下所示的属性文件:

test.key=Test

这个问题的背景是:我有一个Wicket组件,让我们说一个标签,标签的值存储在这个枚举中。但是枚举不应该保留使用过的字符串,而应该只保存属性文件的键。将属性键返回到Wicket组件并让组件在适当的属性文件中查找值的解决方案在我的情况下是不实际的。

我使用的是Wicket 6.17和Java 8.

感谢您的提示。

编辑:此问题的意图: 在这种情况下,枚举的使用归功于可能无法更改的旧架构。另一方面,存在一个请求,即不允许此枚举保存标签的具体字符串,因为GUI中使用的所有字符串都必须导出到属性文件。

对我来说,另一个意图是要了解这是否有可能使枚举使用属性文件,也许可以借助Wicket框架。

3 个答案:

答案 0 :(得分:2)

我#getLabel()做Application.get ().getLocalizer ().getString(key)

P.S。对于糟糕的格式。我在我的移动设备中。

答案 1 :(得分:0)

private TestEnum(String labelKey) {
       this.label = KinfOfPropertyLoader(labelKey); // probably static
    }

但很多"物品"有你的清单?枚举具有常量值("项目")通常很小。 GUI有很大且不断增长的列表。

答案 2 :(得分:0)

如果我正确,你想将枚举变量传递给TestEnum somevar = TestEnum.bar; add(new Label("label", somevar)); 并让标签获取枚举值的i18n值吗?

EnumLabel

查看@Override protected String resourceKey(TestEnum value) { return value.getValue(); } 类并覆盖它的getResource方法:

{{1}}

它将使用Enums值来确定要使用的属性键。