国际化中英文跳转的时候出现“404错误”

这是我在springboot测试国际化出现的问题。

实现国际化的步骤分为三步:
创建一个MyInternationa类来继承LocaleResolver类,

public class MyInternationa implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest request) {

        String lang = request.getParameter("lang");

//        国际化
        Locale locale = Locale.getDefault();

        if (!StringUtils.isEmpty(lang)){
            String[] s = lang.split("_");
            //切割为 语言 国家
            locale = new Locale(s[0],s[1]);

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

    }
}

HTML中转化路径`

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

自定义Bean,交给spring托管

    @Bean
    public LocaleResolver localeResolver(){
        return new MyInternationa();
    }

但是在中英文转化的时候出现404错误。
从地址栏可以看出,参数是没有错误的,
在这里插入图片描述

从这里可以看出点击中英文转换的时候没有跳转index.html界面在这里插入图片描述

仔细检查了一遍和各处debug,终于发现静态资源是默认跳转static的,并不会默认跳转templates,(这是一个坑)
在这里插入图片描述
但是*.HTML文件是放在templates文件下,要想跳转templates文件下,必须自己自定义跳转界面。

解决方法:
创建自定义跳转,


@Configuration
public class MyConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/index.html").setViewName("index");
    }

意思就是地址栏是index.html的就要跳转到index.html中、

问题就是这样解决了。

注意:要想springboot自行跳转的话,就需要把html文件放在static文件下,如果不是,就需要自定义跳转。

在这里插入图片描述
在这里插入图片描述
这样国际化跳转404就解决了。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值