【问题标题】:Spring mvc classpathSpring mvc 类路径
【发布时间】:2017-10-19 15:31:55
【问题描述】:

在我的 spring mvc web-app 中,我将 message_en.properties 文件保存在

下
|-src/main/java
+---src
|   +---main
|   |   +---java
|   |   +---resources
|   |   |   +---i18n
            |   message_en.properties
            |   message_fr.properties

Bean 声明:

@Bean
public ReloadableResourceBundleMessageSource validationMessageSource() {
    ReloadableResourceBundleMessageSource bms = new ReloadableResourceBundleMessageSource();
    bms.setBasename("classpath*:i18n/message");
    bms.setDefaultEncoding("UTF-8");
    return bms;
}

@Bean
public CookieLocaleResolver localeResolver() {
    CookieLocaleResolver localeResolver = new CookieLocaleResolver();
    localeResolver.setDefaultLocale(Locale.ENGLISH);
    localeResolver.setCookieName("my-locale-cookie");
    localeResolver.setCookieMaxAge(3600);
    return localeResolver;
}

@Bean
public LocaleChangeInterceptor localeInterceptor() {
    LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
    interceptor.setParamName("lang");
    return interceptor;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeInterceptor());
}

在控制台中我仍然收到消息:

DEBUG org.springframework.context.support.ReloadableResourceBundleMessageSource - No properties file found for [classpath*:i18n/message] - neither plain properties nor XML
16:13:24.432 [http-nio-8080-exec-3] DEBUG org.springframework.context.support.ReloadableResourceBundleMessageSource - No properties file found for [classpath*:i18n/message_fr] - neither plain properties nor XML
16:13:24.432 [http-nio-8080-exec-3] DEBUG org.springframework.context.support.ReloadableResourceBundleMessageSource - No properties file found for [classpath*:i18n/message_fr_FR] - neither plain properties nor XML
16:13:24.432 [http-nio-8080-exec-3] DEBUG org.springframework.context.support.ReloadableResourceBundleMessageSource - No properties file found for [classpath*:i18n/message_en] - neither plain properties nor XML

请问如何在validationMessageSource Bean中设置属性Basename。

【问题讨论】:

    标签: spring-mvc internationalization classpath


    【解决方案1】:

    上面的代码有两个问题

    一个。第一个问题是

    @Bean
    public ReloadableResourceBundleMessageSource validationMessageSource() 
    

    签名应如下所示(任一)

    @Bean(name = "messageSource") <--- Name of the Bean should be messageSource
        public ReloadableResourceBundleMessageSource validationMessageSource() {
    }
    

    或者应该像下面这样,方法名称为 messageSource 而不是像上面那样将 Bean 名称作为“messageSource”

    @Bean
        public ReloadableResourceBundleMessageSource messageSource() {
    }
    

    b.第二期是

    bms.setBasename("classpath*:i18n/message");
    

    应该是bms.setBasename("classpath:i18n/message");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-26
      • 2013-05-29
      • 2012-06-04
      • 2011-03-16
      • 2016-03-13
      • 2013-05-28
      • 2011-03-06
      相关资源
      最近更新 更多