SpringBoot LocaleChangeInterceptor在登录前无法正常工作

时间:2017-02-21 06:53:25

标签: java spring-boot spring-security

我已经使用安全性和i18n配置了Spring Boot。 LocaleChangeInterceptor在我登录之前无法正常工作。我想在登录界面上更改语言,也取决于用户浏览器本地。

/ *启动本地化部分* /

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor()).addPathPatterns("/**");
    registry.addInterceptor(new WebInterceptor()).addPathPatterns("/**");
}

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

@Bean(name = "localeResolver")
public LocaleResolver getLocaleResolver(){
    return new CookieLocaleResolver();
}

@Bean
public MessageSource messageSource() {
    final ReloadableResourceBundleMessageSource ret = new ReloadableResourceBundleMessageSource();
    ret.setBasename("classpath:messages");
    ret.setDefaultEncoding("UTF-8");
    return ret;
}

@Override
public Validator getValidator() {
    LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
    validator.setValidationMessageSource(messageSource());
    return validator;
}

@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
CharacterEncodingFilter characterEncodingFilter() {
  CharacterEncodingFilter filter = new CharacterEncodingFilter();
  filter.setEncoding("UTF-8");
  filter.setForceEncoding(true);
  return filter;
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是SpringBoot 2.x,请将这些配置添加到application.properties

spring.mvc.locale-resolver=accept_header
spring.mvc.locale=en

要更改请求的语言环境,请将此Accept-Language添加到Http Request Header,例如

Accept-Languate : en_US