3
我有一个枚举包含三种不同的状态类型。这些状态应显示在发送给用户的电子邮件中,并且包含要显示的状态的字符串存储在messages.properties中(使用Spring类org.springframework.context.MessageSource的实现读取)。这在正常的Spring控制器中运行良好。但是,我更喜欢在Enum中获得“显示状态”(将逻辑包含在一个地方)。如何在Enum中从Spring Messagesource读取内容?
但是,如下面的代码自动将消息源连接到enum似乎不起作用,因为messageSource属性始终为空。
public enum InitechStatus{
OPEN("open"), CLOSED("closed"), BROKEN("broken");
public final String name;
@Autowired
private MessageSource messageSource;
InitechStatus(String name) {
this.name = name;
}
@Override
public String toString() {
String displayStatusString = messageSource.getMessage("page.systemadministration.broadcastmail.status."
+ this.name, null, Locale.ENGLISH);
return displayStatusString;
}
}
如何在Enum中使用自动连接的消息源(或者是否有其他方法来实现我所尝试的)?
嘿,感谢答案 - 它看起来非常接近我需要的...但是,我的一些消息需要params - 即org.hibernate.validator.constraints.Length.message = length必须介于{min}和{max}之间。我不认为你知道这个方法吗? – laura 2012-02-23 17:21:10
为了达到这个目的,你可以使用java.text.MessageFormat(http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html)。另请参阅http://docs.oracle.com/javase/tutorial/i18n/format/messageFormat.html – simon 2012-02-24 12:14:06