java - 调用 MessageSource#getMessage 时如何修复 'NoSuchMessageException'

标签 java spring-boot

我想读取 messages.properties 文件中的属性。但是当我打电话时

messageSource.getMessage("property", null, Locale.getDefault())

我收到 NoSuchMessageException。

我已经尝试将 messages.properties-File 重命名为 messages_de_DE.properties 并使用 Locale.GERMANY,但没有区别。

该文件位于 src/main/resources

这是我的入门类(class):

@SpringBootApplication
public class Start extends SpringBootServletInitializer {

    public static void main(final String[] args) {
        SpringApplication.run(Start.class, args);
    }

    @Bean
    public MessageSource messageSource() {
        final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath*:messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

    @Bean
    public LocalValidatorFactoryBean validator(final MessageSource messageSource) {
        final LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
        bean.setValidationMessageSource(messageSource);
        return bean;
    }

}

我做错了什么?

最佳答案

尝试这样的事情:

@Configuration
public class MessageConfig {

    private final MessageSource source;
    private final MessageSourceAccessor accessor;


    @Autowired
    public MessageConfig(MessageSource messageSource) {
        this.accessor = new MessageSourceAccessor(this.source = messageSource, new Locale("de", "DE"));
    }


    @Bean
    public Validator validator() {
        LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
        factory.setValidationMessageSource(this.source);
        return factory;
    }

    public String get(String msg) {
        try {
            Assert.hasText(msg, "message code must be not blank");
            return this.accessor.getMessage(msg.trim());
        } catch (NoSuchMessageException e) {
            return '{' + msg + '}';
        }
    }
}

请使用现有的 MessageSource 并将属性文件放入 /src/main/resources。 另外,尝试将消息文件重命名为 messages_de.properties

关于java - 调用 MessageSource#getMessage 时如何修复 'NoSuchMessageException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674647/

相关文章:

java - 在 S3 中上传输入流 block 后无法解压缩 gzip 压缩文件

java - 不幸的是,该应用程序在 Android 中已停止工作错误

java - 调整 BufferedImages 的大小并将其存储到 JPG 图像黑色背景的文件结果中

java - 我可以让 Swing JButton 的边距更小吗?

java - 从对象列表到基于 Java 8 或 Guava 的键和值对对象进行分组

java - 如果我使用spring data Rest+spring data jpa,是否能保证service层和Dao层的代码为零,需要手动编码?

java - 在网络浏览器中显示输出

java - 我可以将 java 代码放入 .jrxml (jasperreport) 中吗?

gradle - 在 Gradle 中扩展属性会破坏 LDAP 配置

java - 我如何通过junits中的参数传递一个类?