Grails:来自javapojo的国际化

Grails:来自javapojo的国际化,grails,internationalization,Grails,Internationalization,我正试图使用我在src/Java/Gender.Java类中定义的JavaPOJO中的i18n国际化 性别班级: public enum Gender { NONE(0), MALE(1), FEMALE(2); private Integer code; Gender(final Integer code) { this.code = code; } Integer code() { return code; } } 我正在尝试为每个

我正试图使用我在
src/Java/Gender.Java
类中定义的JavaPOJO中的i18n国际化

性别
班级:

public enum Gender {

  NONE(0),
  MALE(1),
  FEMALE(2);

  private Integer code;

  Gender(final Integer code) {
    this.code = code;
  }

  Integer code() {
    return code;
  }

}
我正在尝试为每个枚举项使用一些本地化文本,类似这样(以下代码不起作用!):

问题: 是否可以从Java POJO使用
messageSource
? 我试图避免为性别问题创建表格

我正在使用:

public enum Gender {

  NONE(0),
  MALE(1),
  FEMALE(2);

  private Integer code;

  Gender(final Integer code) {
    this.code = code;
  }

  Integer code() {
    return code;
  }

}
  • Grails2.4.4
谢谢

您可以使用
toString()
方法和
messageSource
bean从
消息中获取
enum
文本值。属性
,如:

import grails.util.Holders;
import org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequest;
import org.codehaus.groovy.grails.web.util.WebUtils;
import org.springframework.context.MessageSource;

public enum Gender {

    NONE(0, "none"),
    MALE(1, "male"),
    FEMALE(2, "female");

    MessageSource messageSource = (MessageSource) Holders.getApplicationContext().getBean("messageSource");
    private Integer code;
    private String text;

    Gender(final Integer code, final String text) {
        this.code = code;
        this.text = text;
    }

    Integer code() {
        return code;
    }

    String text() {
        return text;
    }

    @Override
    public String toString() {
        GrailsWebRequest webUtils = WebUtils.retrieveGrailsWebRequest();
        return messageSource.getMessage("gender." + text, null, "default", webUtils.getLocale());
    }
}
其中
消息。属性
具有

gender.none=None
gender.male=Male
gender.female=Female