首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring多语言

Spring多语言
EN

Stack Overflow用户
提问于 2012-04-17 22:09:57
回答 1查看 1.5K关注 0票数 0

我刚开始使用Spring MVC,在向我的应用程序添加多语言时遇到了一些问题。

我不使用xml配置。我有一个@Configuration类

代码语言:javascript
复制
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’的请求,但我仍然看到它使用默认语言。

有人知道解决方案吗?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2012-04-17 22:46:49

我不确定以这种方式声明的HandlerMapping将如何处理@EnableWebMvc。使用WebMvcConfigurer配置@EnableWebMvc截取程序是一种更常用的方法

代码语言:javascript
复制
@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="com.springexamples.basic.controller") 
public class BasicServletConfig extends BaseConfig implements WebMvcConfigurer {
    ...
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
    ...
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10192877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档