2015-03-21 5 views
1

Я пытаюсь использовать интернационализацию i18n из Java POJO, которую я определил в классе src/java/Gender.java.Grails: интернационализация с Java POJO

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; 
    } 

} 

Вопрос: можно ли использовать messageSource от Java POJO? Я стараюсь избегать создания таблицы для пола.

Я использую:

  • Grails 2.4.4

Спасибо!

ответ

2

Вы можете использовать метод toString() и messageSource боб, чтобы получить 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 
Смежные вопросы