SpringBoot项目国际化语言转换出现404Not Found问题解决办法

我在写一个项目时,国际化语言转换的时候出现了404
在这里插入图片描述
但是看到url里面参数确实是传进去了,后来经过调试和查找资料知道了问题出在这里:
静态资源都是默认跳转到static里面,而我们的视图都放在了templates里面

在这里插入图片描述
所以想解决这个问题,就要自己创建个自定义跳转
具体方法:
在config包下建一个MyConfig类

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyConfig  implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login.html").setViewName("/login");
    }
}

下面是我实现国际化的方法:
1.在config包下创建一个MyLocaleResolver实现LocaleResolver接口。

public class MyLocaleResolver implements LocaleResolver {

//解析请求
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        //获取请求中的语言参数链接
        String language = httpServletRequest.getParameter("l");
        Locale locale = Locale.getDefault();//如果没有使用默认
        //如果请求的链接携带了国际化参数
        if(!StringUtils.isEmpty(language)){
            //en_US
            String[] split = language.split("_");
            //语言 国家
            locale = new Locale(split[0], split[1]);
        }
       return locale;
    }

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

    }
}

介绍下LocaleResolver:
LocaleResolver的主要作用: 解析Request中的语言标志参数或者head中的Accept-Language参数, 并将解析后的参数保存到指定的域中。
在这里插入图片描述
2.在视图中转换路径:
在这里插入图片描述
3.自定义Bean,交给spring托管

 /*自定义国际化*/
    @Bean
    public LocaleResolver localeResolver(){

        return new MyLocaleResolver();
    }

现在就可以测试下是否成功了!
中文:
在这里插入图片描述
英文:
在这里插入图片描述
发现404问题已经解决了!

总结:如果想让springboot自动跳转,就需要把html文件放在static文件下,如果在其他文件夹下,就需要自定义跳转。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值