2017-06-07 8 views
0

私はnoobであり、スプリングブートアプリケーションの国際化を行いたいと思っています。これは、私が試したものであるが、それは仕事を得ることはできません。セッションオブジェクトからロケールを取得

@SpringBootApplication 
public class CarriersApplication extends WebMvcConfigurerAdapter { 

@Autowired WebContextHolder webContextHolder; 

public static void main(String[] args) { 
    SpringApplication.run(CarriersApplication.class, args); 
} 

@Bean 
public RestTemplate createRestTemplate() { 
    return new RestTemplate(); 
} 


@Bean 
public LocaleResolver localeResolver() { 

    HttpSession session = webContextHolder.getSession(); 
    String lang = ((Merchant) session.getAttribute("principal")).getLanguage(); 

    // the code above is an attempt to get language from session object to set the 
    // default locale 
    // ex: lang = en,fr 

    SessionLocaleResolver slr = new SessionLocaleResolver(); 
    slr.setDefaultLocale(new Locale(lang)); 
    return slr; 

} 

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

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

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 
} 

私の質問は:私はlocaleResolver()メソッドを定義するときに、このように「校長セッションオブジェクトからロケールを取得する可能性はありますか?

答えて

0

あなたはfolowsとしてLocaleContextHolderからロケールを取得することができます。

@Bean 
public LocaleResolver localeResolver() { 
    Locale locale = LocaleContextHolder.getLocale(); 
    SessionLocaleResolver slr = new SessionLocaleResolver(); 
    slr.setDefaultLocale(locale); 
    return slr; 

} 
関連する問題