java - 如何从 Enum 中的 Spring Messagesource 读取内容?

标签 java spring properties enums autowired

我有一个包含三种不同状态类型的枚举。这些状态应该显示在发送给用户的电子邮件中,包含要显示的状态的字符串存储在 messages.properties 中(使用 Spring 类 org.springframework.context.MessageSource 的实现读取)。这在普通的 Spring Controller 中运行良好。但是,我更愿意在枚举中获取“显示状态”(将逻辑包含在一个地方)。

但是,像下面的代码一样将消息源自动连接到枚举似乎不起作用,因为 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;
        }


    }

我如何在枚举中使用自动连接的消息源(或者是否有其他方法可以实现我正在尝试的目标)?

最佳答案

我从 SO 上的这个答案中找到了解决方案:Using Spring IoC to set up enum values

这给了我使用 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;
        }


    }

关于java - 如何从 Enum 中的 Spring Messagesource 读取内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183252/

相关文章:

java - 使用通配符搜索目录中的文件

java - 运行 paint 方法时的默认颜色是什么

java - 我应该如何进行或不应该进行单元测试?

kotlin - 在没有 getValue 和 setValue 的情况下,Kotlin 的 `lazy` 实现如何工作?

python - 是否可以通过Python3中的属性来确定方法是否被调用?

用于财务数据的 Java API

java - 身份验证后重定向到 protected 页面

java - 用于数据库调用的Spring Boot并发问题

java - Spring MVC @PropertySource 所有键/值作为映射

java - 如何在 lambda 函数中对收集 IntStream 的值进行操作