springboot页面国际化
- 引入依赖pom.xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-thymeleaf
- 导入网页资源,这里给大家推荐一个我自己在使用的页面资源,SB ADMIN-2
html页面放在templates目录下,这是thymeleaf默认的解析目录,其他的样式文件放在static目录下
文章图片
- 【springboot页面国际化】接管spring Mvc,自定义url访问路径,可做可不做
建一个config目录,在这里建一个myWebMvcConfig
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.WebMvcConfigurer; @Configuration public class myWebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/wq").setViewName("register"); //localhost:8080/wq registry.addViewController("/").setViewName("register"); //localhpst:8080/ registry.addViewController("/register.html").setViewName("register"); //localhost:8080/register.html } }
路径可以设置多个,这样只要是这三个url,spring 都会访问register.html
还有一种方式也能实现
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class demoController { @RequestMapping({"/","/wq"}) public String test(){ return "register"; } }
- 国际化配置文件:en_US英文,zh_CN中文
文章图片
点击左上角加号,便可以添加配置的属性,只要在右边填写相应的中英文即可
- 国际化配置文件:en_US英文,zh_CN中文
文章图片
5. 配置文件已经写好,如何在我们的页面中使用呢?thyme leaf的作用又来了
首先在你的网页添加这样的头部```html```在所有的html属性前加**th:**就被thymeleaf接管了,根据thymeleaf 语法,获取国际化值使用**#{}**,本地值用**${}**,url用**@{}**![image-20220228101634725](C:\Users\32944\AppData\Roaming\Typora\typora-user-images\image-20220228101634725.png)![image-20220228101806743](C:\Users\32944\AppData\Roaming\Typora\typora-user-images\image-20220228101806743.png)```html
中文
English
```6. 页面和配置文件都准备好了,怎样实现跳转呢?在WebMvcAutoConfiguration.class中```java
@Bean
@ConditionalOnMissingBean(
name = {"localeResolver"}
)
public LocaleResolver localeResolver() {
if (this.webProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.WebProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.webProperties.getLocale());
} else {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(this.webProperties.getLocale());
return localeResolver;
}
}
```我们再找到AcceptHeaderLocaleResolver.class,发现它实现了LocaleResolver ```java
public class AcceptHeaderLocaleResolver implements LocaleResolver {
private final List supportedLocales = new ArrayList(4);
@Nullable
private Locale defaultLocale;
```那我们就编写自己的LocaleResolver ```java
public class myLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {String mylocale=request.getParameter("l");
Locale locale=Locale.getDefault();
if(!StringUtils.isEmpty(mylocale)){
String[] split=mylocale.split("_");
locale=new Locale(split[0],split[1]);
}
System.out.println("debug====>"+mylocale);
return locale;
}@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {}
}```然后在spring配置中注入myLocaleResolver```java
@Bean
public LocaleResolver localeResolver(){
return new myLocaleResolver();
}
```**注意:方法名必须是localeResolver**,**因为源码中名字为localeResolver的bean**
文章图片
7. 最后我们来测试一下
文章图片
文章图片
文章图片
而且控制台输出也没问题
推荐阅读
- SpringBoot|第四十章(基于SpringBoot & Quartz完成定时任务分布式多节点负载持久化)
- 项目资料|基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的智慧养老管理系统
- java项目精品实战案例|基于Java+SpringBoot+vue+node.js实现直行车租赁平台管理系统
- SpringBoot自定义校验注解
- #|SpringBoot集成Elasticseach
- Springboot基于Redisson实现Redis分布式可重入锁【案例到源码分析】
- 解决springboot环境切换失效的问题
- 使用|使用 JavaScript 制作页面效果
- mybatis和springboot整合
- java|节后上班第一天公司要你用SpringBoot实现万能文件在线预览