grails - Grails:Java POJO的国际化

标签 grails internationalization

我正在尝试从src/java/Gender.java类中定义的Java POJO中使用i18n国际化。

Gender类:

public enum Gender {

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

  private Integer code;

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

  Integer code() {
    return code;
  }

}

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

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

  private Integer code;
  private String text;

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

  Integer code() {
    return code;
  }

  Integer text() {
    return text;
  }

}

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

我正在使用:
  • Grails 2.4.4

  • 谢谢!

    最佳答案

    您可以使用toString()方法和messageSource bean从enum获取messages.properties文本值,例如:

    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());
        }
    }
    
    messages.properties在哪里
    gender.none=None
    gender.male=Male
    gender.female=Female
    

    关于grails - Grails:Java POJO的国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181258/

    相关文章:

    grails - 来自 Grails 的关于 Grails 错误的电子邮件通知

    java - gwt getKey 方法是否存在?

    Java 国际化 - ISO ISO 3166-2(分割 - 例如省或州)或 UN/LOCODE - 库

    asp.net - ASP.NET 中的国际化如何工作?

    javascript - 如何使用 i18next?翻译问题

    grails - 简单Grails 2.5.1应用程序使用Groovy 2.4.4泄漏类加载器

    grails - 外部化 Grails 3 Spring 安全配置

    java - Struts2 中的全局资源包 - 粒度最佳实践?

    tomcat - Java Melody 的统计差距

    java - 使用正确的参数在 groovy 脚本之间调用方法