Spring国际化语言切换不生效
使用SessionLocaleResolver一致不生效,获取message时候报错:
java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy
at org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver.setLocale...
org.springframework.web.servlet.i18n.LocaleChangeInterceptor.preHandle...
最终定位到原因,DispatcherServlet读取到的仍然是AcceptHeaderLocaleResolver,注入了但没有生效,问题代码如下:
@Bean
@Primary
public LocalResolver sessionLocaleResolver() {SessionLocaleResolver slr = new SessionLocaleResolver();slr.setDefaultLocale(Locale.ENGLISH);slr.setDefaultTimeZone(TimeZone.getTimeZone("UTC"));return slr;
}修改后代码如下:
@Bean("localeResolver")@Primarypublic LocalResolver sessionLocaleResolver() {SessionLocaleResolver slr = new SessionLocaleResolver();slr.setDefaultLocale(Locale.ENGLISH);slr.setDefaultTimeZone(TimeZone.getTimeZone("UTC"));return slr;
}