我正在尝试从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
?我试图避免为性别创建表格。
我正在使用:
谢谢!
最佳答案
您可以使用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/