2

spring 3.1.2 MVC を使用しています。注釈によって Web アプリケーションを構成しようとしています

ここでは、 LocaleChangeInterceptorReloadableResourceBundleMessageSourceSessionLocaleResolverクラスを使用しているため、国際化を実装したいと考えています。ここに私の設定クラスがあります:

@Configuration
@EnableWebMvc 
public class MyAppConfig extends WebMvcConfigurerAdapter{

@Bean
public ReloadableResourceBundleMessageSource resourceBundleMessageSource(){
        ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
        String[] resources= {"classpath:labels","classpath:message"};
        messageSource.setBasenames(resources);
        return messageSource;
    }

@Bean 
public LocaleChangeInterceptor localeChangeInterceptor(){
    LocaleChangeInterceptor localeChangeInterceptor=new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("locale");
    return localeChangeInterceptor;
}

@Bean
public SessionLocaleResolver sessionLocaleResolver(){
    SessionLocaleResolver localeResolver=new SessionLocaleResolver();
    localeResolver.setDefaultLocale(new Locale("da","DK"));
    return localeResolver;
}   

public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

}

しかし、これは機能していません。デフォルトのテキストが表示されます

<spring:message code="login.user.password" text="Password" /> 

「パスワード」として。

私を助けてください。ここで、次の構成を行うと、applicationContext.xml正常に動作します。

 <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">


 <property name="basenames">
    <list>
        <value>classpath:message</value>
        <value>classpath:labels</value>            
    </list>
</property>     
<property name="defaultEncoding" value="ISO-8859-1" />
</bean>

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="locale"/>
</mvc:interceptors>


<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
    <property name="defaultLocale" value="da_DK" />
</bean>

この問題を解決するために私を助けてください。

4

2 に答える 2

3

messageSource の Bean 名は「messageSource」である必要があり、@Configuration ではresourceBundleMessageSource. これを次のように変更します。

    @Bean
    public ReloadableResourceBundleMessageSource messageSource(){
        ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
        String[] resources= {"classpath:labels","classpath:message"};
        messageSource.setBasenames(resources);
        return messageSource;
    }
于 2012-07-24T09:34:57.003 に答える
2

問題を解決しました。web.xml に init param エントリがありませんでした

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </init-param>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            com.config.AppConfig
        </param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

このエントリを追加した後、注釈付きの構成は正常に機能しています。:)

于 2012-08-01T12:23:08.757 に答える