java - Java 文件中的 Spring 国际化错误

标签 java spring

我正在尝试使用 .java 文件中的 messages_en.properties 模板发送短信。

我的 WebMvcConfig 文件是:

    @Bean(name = "messageSource")
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("i18n/messages");
        messageSource.setDefaultEncoding(StandardCharsets.UTF_8.toString());
        return messageSource;
    }

我的 .java 文件是:

content = messageSource.getMessage("delivery.otp.sms.template", new Object[] {"123456"}, LocaleContextHolder.getLocale())

我的文件位于 main/resources/i18n/messages_en.properties

delivery.otp.sms.template=Your OTP is {0}.

但是我得到了错误:

No message found under code 'delivery.otp.sms.template' for locale 'en_US'

请帮忙。谢谢。

最佳答案

只需在您的基本名称中添加 classpath: 即可。所以最终的代码如下:

@Bean(name = "messageSource")
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/i18n/messages");
        messageSource.setDefaultEncoding(StandardCharsets.UTF_8.toString());
        return messageSource;
    }

原因是,如果您不添加 classpath: 它会将给定路径视为 abosolute 路径,但由于我们有相对路径 (main/resources/i18n/messages_en.properties)这里,最好添加classpath:这样,spring将从jar运行的目录中查找。

关于java - Java 文件中的 Spring 国际化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61862450/

相关文章:

java - org.springframework.beans.factory.NoSuchBeanDefinitionException异常

java - 在一个表单中有多个提交按钮并确定哪个在 Controller 中被按下

java - removeif() 不适用于 jpa 返回的列表

java - 异常: java. lang.ClassCastException : [B cannot be cast to java. io.ObjectStreamClass

java - 将 JTextArea 设置为像日志一样

java - Maven+Spring+Hibernate : java. lang.ClassNotFoundException : org. springframework.context.support.ClassPathXmlApplicationContext

java - 如何在服务层处理Spring JPA的版本

java - PostConstruct 在 BeanPostProcessor 之前被调用

java - 如何在 Java Swing 中创建圆角 BevelBorder?

java - 在 html 中迭代 TreeSet :option