我有一个包含三种不同状态类型的枚举。这些状态应该显示在发送给用户的电子邮件中,并且包含要显示的状态的字符串存储在 messages.properties 中(使用 Spring 类 org.springframework.context.MessageSource 的实现读取)。这在普通的 Spring 控制器中效果很好。但是,我更愿意在枚举中获取“显示状态”(将逻辑包含在一处)。
但是,将消息源自动连接到枚举(如以下代码所示)似乎不起作用,因为 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;
}
}
如何在枚举中使用自动连接的消息源(或者是否有其他方法来实现我正在尝试的功能)?
我从这个答案中找到了解决方案:使用 Spring IoC 设置枚举值 https://stackoverflow.com/questions/710392/using-spring-ioc-to-set-up-enum-values#711022
这给了我使用 java.util.ResourceBundle 来读取消息的指针,如下所示:
public enum InitechStatus{
OPEN("open"), CLOSED("closed"), BROKEN("broken");
private static ResourceBundle resourceBundle = ResourceBundle.getBundle("messages",
Locale.ENGLISH);
public final String name;
@Autowired
private MessageSource messageSource;
InitechStatus(String name) {
this.name = name;
}
@Override
public String toString() {
String displayStatusString = resourceBundle.getString("page.systemadministration.broadcastmail.status."
+ this.name);
return displayStatusString;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)