我在写一个使用Spring Boot的应用程序。在我的应用程序中,我将使用本地化的网址,例如http://localhost:8080/School/**en**/xxx/...
。我尝试实现Custom Locale Interceptor。在下面列出的第一个变种工作正常。我想使用第二个变体,而不是法国或德国的区域设置不会改变,仍然是en_US。任何人都可以给我建议吗?创建自定义LocalChangeInterceptor
@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {
1 VARIANT
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.GERMANY);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
2 VARIANT
@Bean
public LangInterceptor langInterceptor() {
return new LangInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(langInterceptor());
}
@Bean
public SessionLocaleResolver sessionLocaleResolver() {
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.GERMANY);
return sessionLocaleResolver;
}
}
而且我的自定义拦截器:
public class LangInterceptor extends HandlerInterceptorAdapter {
@Autowired
LocaleResolver sessionLocaleResolver;
Locale locale;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (StringUtils.startsWithIgnoreCase(request.getServletPath(), "/it/")) {
locale = new Locale("it");
} else {
locale = new Locale("en");
}
sessionLocaleResolver.setLocale(request, response, Locale.FRENCH);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
我的回答对您有帮助吗? –
非常感谢,你的解释是完全真实的,但是: 1. LocaleChangeInterceptor来自'org.springframework.web.servlet.i18n'包,可以使用,它可以作为所有的第一个变体。 2.第二个变体用xml编写时适用于我。 –
我需要的确切是我的语言环境将从url –