i18n与Thymeleaf合作但不与MessageSource合作

时间:2015-07-09 13:31:03

标签: spring spring-mvc internationalization maven-3 thymeleaf

我正在使用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]

我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题:我在两个不同的环境中工作。我在@Service层(getRootConfigClasses)中调用MessageSource,并在ServletConfigClasses中配置它。

解决方案:仅适用于根上下文(getRootConfigClasses)