Enums的通用翻译器

时间:2014-03-09 18:12:40

标签: spring jsp spring-mvc enums

我正在使用Spring 3,Hibernate和JSP。我的用户实体的字段性别为Enum类型。当我在表单中显示此字段时,我希望将选项本地化。问题是:有没有办法让我的实体使用的所有枚举在显示时进行本地化?

1 个答案:

答案 0 :(得分:6)

我们假设我们有以下枚举,我们需要将其本地化

package com.foo.enums;

public enum Color {
    RED, GREEN, BLUE;
}

在消息文件(例如messages_de.properties)中,必须定义以下代码

colors.RED=rot
colors.GREEN=grün
colors.BLUE=blau

最后,jsp视图应该如下所示

<c:forEach items="${colors}" var="color">
    <c:set value="colors.${color }" var="colorMessage"  />

    <spring:message code="${colorMessage }"/>
</c:forEach>

此外,您可以直接在枚举中定义消息代码,如下所示

package com.scriptico.blog.sw.enums;

public enum Color {
    RED("colors.RED"), GREEN("colors.GREEN"), BLUE("colors.BLUE");

    private String messageCode;

    private Color(final String messageCode) {
        this.messageCode = messageCode;
    }

    public String getMessageCode() {
        return messageCode;
    }
}

然后只在消息标记中使用messageCode

<c:forEach items="${colors}" var="color">
    <spring:message code="${color.messageCode }"/>
</c:forEach>