SpringBoot----国际化配置的原理和操作——语言切换28

实现点按钮来转换网页的语言的功能

原理:

1.Locale(区域信息对象),这个对象决定了SpringMVC判断浏览器请求页面的语言

2.SpingMVC是通过LocaleResolver这个组件来获取Locale(区域信息对象)的。

3.在WebMvcAutoConfiguration自动配置类中可以看到localeResolver这个方法。

这个方法的代码逻辑大概就是根据配置文件获取配置后判断,如果配置用默认的就向容器返回默认的Locale解析器,如果没有指定用默认的就返回AcceptHeaderLocaleResolver这个Locale解析器。

4.在AcceptHeaderLocaleResolver这个解析器中有resolverLocale方法获取Locale,这个方法就是用request从请求头中获取Locale信息的然后返回Locale对象的。

思路如果我们要用按钮请求来切换页面的语言,我们就需要在普通的请求信息中获取Locale信息,所以我们不能用默认的组件,因为默认的localeResolver组件是从浏览器发送的请求头中的获取Locale信息的。

操作:

第一步:

编写页面按钮发送值到服务器端

<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}" >中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}" >English</a>

第二步:

编写新的LocaleResolver组件

public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        String l = httpServletRequest.getParameter("l");
        Locale locale = Locale.getDefault();
        if (!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale  = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse         httpServletResponse, @Nullable Locale locale) {
    }
}

第三步:

在配置类上面把自己的组件放入到容器中

@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {

    //这里是搞一个组件,把自己的localeResolver换上去,做出了中文和英文按钮
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值