<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前一段時間做了一個專案,需要解決中文、繁體、英文的國際化問題,所以本文將詳細介紹springboot頁面國際化設定的過程
1.引入依賴pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2.匯入網頁資源,這裡給大家推薦一個我自己在使用的頁面資源,SB ADMIN-2
html頁面放在templates目錄下,這是thymeleaf預設的解析目錄,其他的樣式檔案放在static目錄下
3.接管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"; } }
4.國際化組態檔:en_US英文,zh_CN中文
點選左上角加號,便可以新增設定的屬性,只要在右邊填寫相應的中英文即可
5. 組態檔已經寫好,如何在我們的頁面中使用呢?thyme leaf的作用又來了
首先在你的網頁新增這樣的頭部
<html lang="en" xmlns:th="http://www.thymeleaf.org">
在所有的html屬性前加**th:**就被thymeleaf接管了,根據thymeleaf 語法,獲取國際化值使用**#{}**,本地值用**${}**,url用**@{}**
<a th:href="@{/register.html(l='zh_CN')}" rel="external nofollow" >中文 </a> <a th:href="@{/register.html(l='en_US')}" rel="external nofollow" >English </a>
6. 頁面和組態檔都準備好了,怎樣實現跳轉呢?
在WebMvcAutoConfiguration.class中
@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
public class AcceptHeaderLocaleResolver implements LocaleResolver { private final List<Locale> supportedLocales = new ArrayList(4); @Nullable private Locale defaultLocale;
那我們就編寫自己的LocaleResolver
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
@Bean public LocaleResolver localeResolver(){ return new myLocaleResolver(); }
**注意:方法名必須是localeResolver**,**因為原始碼中名字為localeResolver的bean**
7. 最後我們來測試一下
而且控制檯輸出也沒問題
到此這篇關於springboot頁面國際化設定的文章就介紹到這了,更多相關springboot頁面國際化內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45