学习springboot时候,自定义国际化不生效问题.

Posted QAQqinlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习springboot时候,自定义国际化不生效问题.相关的知识,希望对你有一定的参考价值。

  用的是springboot最新的稳定版本,在使用自定义localResolver实现国际化时,出现了错误,参照网上的文章,发现并不生效

未实现页面按照请求参数的值来显示中文还是英文,出现这种问题进行了以下排错:

  1.首先想到的是忘记写注解,经检查并没有存在类似问题

  2.可能存在添加注解的时候import包出现问题,经检查也没有存在类似问题

  3.可能是自己的逻辑有些混乱,于是重新梳理自己的代码逻辑,最后检查也没有错误

  4.实在找不到什么原因了,最后决定看看官方文档,毕竟网上的很多解答可以追述到官方文档中

  在WebMvcAutoConfiguration里边自动配置的localeResolver,可以清楚的看到如下代码如果自己定义了localeResolver加载自己的,否则加载系统的

public LocaleResolver localeResolver() {
            if (this.mvcProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties.LocaleResolver.FIXED) {
                return new FixedLocaleResolver(this.mvcProperties.getLocale());
            } else {
                AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
                localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
                return localeResolver;
            }
        }

 

  在《Spring Boot 2 Recipes: A Problem-Solution Approach》书中提到这样一句话:

You can also define a locale resolver by registering a bean of type LocaleResolver in the web application context.

You must set the bean name of the locale resolver to localeResolver so it can be autodetected.

  上述英语意思为:在自定义localeResolver时方法名必须一致,检查自己的发现确实不对

改过后方法名的如下

 

 

 大致一看没有问题,但细看确实是方法名拼写错误,改过来即可实现国际化

总结:以后遇到这种情况情况少,但仍需注意,注意书写!

以上是关于学习springboot时候,自定义国际化不生效问题.的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot日志配置文件不生效

Vue i18n国际化切换data中数据不生效

26. spring boot 拦截器不生效的原因

springboot实现自定义国际化

Spring boot切面不生效问题

一文教你实现 SpringBoot 中的自定义 Validator 和错误信息国际化配置