У меня есть Enum, содержащий три разных типа статуса. Эти статусы должны отображаться в электронном письме, отправленном пользователям, а строки, содержащие статусы, которые будут отображаться, сохраняются в messages.properties (чтение с использованием реализации класса Spring org.springframework.context.MessageSource). Это хорошо работает в обычном контроллере весны. Тем не менее, я бы предпочел получить «статус отображения» в 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;
}
}
Как я могу использовать авто-проводной messagesource внутри Enum (или есть какой-то другой способ добиться того, что я пытаюсь)?
Эй, спасибо за ответ - он выглядит так близко к тому, что мне нужно ... однако некоторым моим сообщениям нужны параметры - то есть org.hibernate.validator.constraints.Length.message = длина должна быть между {min} и {max}. Я не думаю, что вы знаете, как это сделать? – laura
Для этого вы, вероятно, можете использовать 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