【发布时间】:2017-05-16 04:25:18
【问题描述】:
尝试用spring i18n为我的应用实现国际化,但是在调用messageSource.getMessage()时抛出noSuchMessageException异常,具体如下:
detailMessage = "No message found under code 'welcome' for locale 'en_US'."
cause = org.springframework.context.NoSuchMessageException: No message found under code 'welcome' for locale 'en_US'.
并且,在 application.yml 中,spring i18n 基本名称配置为:
spring:
messages:
basename: i18n/messages
另外,在目录:src/main/resources中,有三个属性:
resources
- i18n.messages
- messages.properties
- messages_en_US.properties
- messages_zh_CN.properties
在控制器中,我尝试通过调用getMessage("key", null, locale)来获取消息,下面是相关代码:
import org.springframework.context.MessageSource;
@Autowired
private MessageSource messageSource;
Locale locale = LocaleContextHolder.getLocale();
String str1 = messageSource.getMessage("welcome", null, locale);
在属性文件中,我设置了 key-welcome 的值。
为了实现国际化,我想,它应该与上面的配置和代码一起工作,但我总是得到 noSuchMessageException,我不知道这个问题是怎么回事,谁能帮帮我?
【问题讨论】:
-
是因为找不到properties文件,根据properties文件结构,application.yml应该是这样的:spring.messages.basename: i18n/messages/messages
-
spring.messages.basename: i18n/messages/messages 解决了您的问题吗?你应该回答你的问题并接受它
标签: spring spring-mvc spring-boot internationalization