这是我们没有配置的界面
之后我们在静态资源文件夹中创建两个配置文件,分别为中文和英文的配置文件
之后我们需要看一下源码的原理,找到如下文件打开
我们看见了@ConfigurationProperties注解,代表配置文件的前缀为:Spring.messages
basename属性代表默认配置文件名称为:messages
所以我们想修改配置文件,可以在全局配置文件中修改,指定这个属性去resources/i18n/找login开头的文件进行扫描
这里我们就可以在页面中从配置文件中取值了,需要配置thymeleaf模板
注意:在配置文件中取值需要中#号,属性取值用$
此时运行界面,发现可以在页面设置中进行中英文切换了
我们还可以使用超链接的方式记性中英文的切换,我们找一下源码
LocaleResolver的主要作用: 解析Request中的语言标志参数或者head中的Accept-Language参数, 并将解析后的参数保存到指定的域中。
所以我们可以通过页面给locale 传值
通过配置类springioc容器进行创建LocaleResolver(@Bean会将方法的返回值放入Bean池,通过Springioc容器进行创建.注意:方法名必须是返回值类型的首字母小写形式,否则无法通过反射创建对象)返回我们自定义的类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration//代表配置的意思
public class MyConfiguration {
@Bean//方法返回值直接通过此注解进行ioc容器创建
public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
};
return adapter;
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocalReslover();
}
}
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.LocaleResolver;
public class MyLocalReslover implements LocaleResolver{
@Override
public Locale resolveLocale(HttpServletRequest request) {
String info = request.getParameter("l");
Locale locale = Locale.getDefault();
if(info!=null){
String[] infos = info.split("_");
locale = new Locale(infos[0],infos[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
// TODO Auto-generated method stub
}
}
设置完成后,点击中英文切换,成功
通过对页面的中文/英文超链接按钮的传值,传入LocaleResolver,通过传入的值寻找静态资源中的配置文件,完成切换。