0

私はSpring MVCを初めて使用していますが、アプリケーションに多言語を追加するのに問題があります。

私はxml構成を使用していません。@Configuration クラスがあります

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.springexamples.basic.controller")
public class BasicServletConfig extends BaseConfig {

    @Bean
    ViewResolver viewResolver() {
        return getViewResolver("views/basic/", ".jsp");
    }

    @Bean
    MessageSource messageSource() {
        return getMessageSource("/messages/messages");
}

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

@Bean
LocaleResolver localeResolver() {
    return new SessionLocaleResolver();
}

@Bean
HandlerMapping handlerMapping() {
    SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
    mapping.setInterceptors(new HandlerInterceptor[] { localeChangeInterceptor() });
    return mapping;
}
}

アプリケーションをテストすると、常にデフォルトの言語 (スペイン語) が表示されます。パラメータ 'lang=en' または 'lang=EN' を指定してリクエストを送信しましたが、それでもデフォルトの言語で表示されます。

¿誰でも解決策を知っていますか?.

ありがとう、

4

1 に答える 1

0

HandlerMappingこのように宣言されたものがでどのように機能するかはわかりません@EnableWebMvc。インターセプターを構成するためのより慣用的な方法@EnableWebMvcは、次を使用することWebMvcConfigurerです。

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="com.springexamples.basic.controller") 
public class BasicServletConfig extends BaseConfig implements WebMvcConfigurer {
    ...
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
    ...
} 
于 2012-04-17T14:46:48.983 に答える