自定义LocaleResolver不生效问题解决方法
概述
自定义LocaleResolver,进行了@Bean注入不生效
一、LocalResolver类内容
package com.example.demo.config;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
public class MyLocalResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
// 获取请求中的语言参数
String language = request.getParameter("l");
Locale locale = Locale.getDefault();
// 如果请求的链接携带了国际化参数
if(!StringUtils.isEmpty(language)){
// zh_CN
String[] split = language.split("_");
// 国家,地区
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
二、注入
// 自定义的国际化组件就生效了
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResolver();
}
三、不生效的原因总结
- 注入组件的过程中类型是否为LocaleResolver 注意LocaleResolver不要写成LocalResolver
- 方法名是否为localeResolver注意l为小写