我正在使用Spring MVC + Thymeleaf并在尝试从MessageSource获取消息时收到以下异常:NoSuchMessageException
我的配置:
@Bean(name="messageSource")
public MessageSource messageSource(){
ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
source.setBasename("classpath:i18n/messages");
source.setUseCodeAsDefaultMessage(true);
source.setDefaultEncoding( propWebEncoding );
source.setCacheSeconds(0); /* check the last-modified timestamp */
return source;
}
我的档案在:
src/main/resources/i18n/messages_es.properties
src/main/resources/i18n/messages_en.properties
我的语言环境是“en”
当我在HTML(Thymeleaf)中使用消息“myproperty.example”时,它可以正常工作,但是当我尝试在@Controller
或@Service
中使用以下内容获取消息时
@Autowired MessageSource messageSource
;
并且
messageSource.getMessage(“myproperty.example”, null, Locale.EN);
它引发NoSuchMessageException
异常无法找到...对于locale'en'
这都配置了maven,我的i18n文件位于目标文件夹下:
WEB-INF/classes/i18n/ [files]
我做错了什么?
答案 0 :(得分:1)
问题:我在两个不同的环境中工作。我在@Service层(getRootConfigClasses)中调用MessageSource,并在ServletConfigClasses中配置它。
解决方案:仅适用于根上下文(getRootConfigClasses)