技术标签: spring spring boot java SpringBoot
最近注意到许多项目都是支持语种切换的,于是用springboot实现了前后端分离的语种切换
在pom.xml中添加如下依赖
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>jquery-i18n-properties</artifactId>
<version>1.2.7</version>
</dependency>
说到配置就令人头疼,所幸的是springboot极大的简化了开发中繁琐的配置。
前缀_语种类型.properties
,其中message.properties
文件内容可为空。但必须定义
。该文件优先级最高
message.properties
中未定义任何内容。 #i18n
spring.messages.basename=static.i18n.message
spring.messages.cache-duration=3600
spring.messages.encoding=UTF-8
其中最主要的是basename,指定了语言包所在位置。
basename的值结尾最后需要加上properties语言包文件名的前缀
import java.util.Locale;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
@Configuration
public class LocaleConfig {
/**
* 默认解析器 其中locale表示默认语言,当请求中未包含语种信息,则设置默认语种
* 当前默认为CHINA,zh_CN
*/
@Bean
public SessionLocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.CHINA);
return localeResolver;
}
/**
* 默认拦截器 其中lang表示切换语言的参数名
* 拦截请求,获取请求参数lang种包含的语种信息并重新注册语种信息
*/
@Bean
public WebMvcConfigurer localeInterceptor() {
return new WebMvcConfigurer() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
localeInterceptor.setParamName("lang");
registry.addInterceptor(localeInterceptor);
}
};
}
}
localeResolver
其中定义了默认语种。localeInterceptor
前端请求参数lang中包含指定语种时,将该语种注册到Locale中
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/domain")
//解决跨域问题:指定允许跨域的域名
@CrossOrigin(origins = "http://test.do")
public class DomainControl {
@Autowired
private MessageSource messageSource;
/**
* 多语言测试
*/
@RequestMapping("/i18ntest")
public Map<Object, Object> i18nTest() {
Map<Object, Object> result = new HashMap<Object, Object>();
result.put("code", 5001);
result.put("msg", messageSource.getMessage("error.error_5001", null, LocaleContextHolder.getLocale()));
return result;
}
}
文章浏览阅读467次。Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式(C#)(Mono)_c# 调用 sdk转bitmap
文章浏览阅读316次,点赞7次,收藏8次。【代码】高尔夫游戏源码uinty引擎开发。_炫技高尔夫 代码
文章浏览阅读1.7k次。话说这是第一次自己配置log4j,以前都是拿来就用,完全没想过这个问题。 log4j的配置文件还是比较好用的,只要编译后log4j.properties文件是在classes目录下,它就会自动查找这个文件。 把记录日志放到文件中也是比较好配置的,问题是这个日志文件在哪儿,死活没找到?这让我有些慌张,如果不自己定义路径,将它控制住,就会觉得有些不舒服。 在网上搜了大半天,关于log4j讲解的文章_wildfly部署后log4j对应的log在哪里
文章浏览阅读3.2k次。JRebel热部署 xml文件修改 sql文件修改 不生效_jrebel 不更新sql
文章浏览阅读1.6k次,点赞6次,收藏14次。论文学习笔记 POSEIDON: Privacy-Preserving Federated Neural Network LearningNDSS 2021录用文章目录论文学习笔记 POSEIDON: Privacy-Preserving Federated Neural Network Learning一、机器学习1. 机器学习(ML)中的挑战2. 隐私保护机器学习(PPML)二、POSEIDON方案1. 系统和威胁模型2. 方案总览多方同态加密(MHE)联邦学习主要挑战和解决方法3. 方案CKKS_poseidon: privacypreserving federated neural network learning
文章浏览阅读1.9k次。1漏洞背景OpenTSDB(Open Time Series Data Base)是基于HBASE构建的分布式、可扩展的时间序列数据库。OpenTSDB可以获取电力行业、化工行业、物联网行业等各类型实时监测、检查与分析设备所采集、产生的时间序列数据,并提供存储、索引以及图形化服务,使其易于访问和可视化。2 漏洞原理OpenTSDB 2.4.0及之前版本中存在远程代码执行漏洞,用户提交的yrange参数或其他相关参数的值在/src/tsd/GraphHandler.java文件中进行简单的反引号._cve-2020-35476
文章浏览阅读8.9k次,点赞10次,收藏85次。Linux常用60个命令--实例详解Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多_linux命令一共有多少个?
文章浏览阅读262次,点赞3次,收藏3次。 【功能说明】 shutdown是一个用来安全关闭或重启Linux系统的命令,系统在关闭之前会通知所有的登录用户,系统即将关闭,此时所有的新用户都不可以再登陆了,与shutdown功能类似的命令还有init、halt、poweroff、reboot。 【语法格式】 技巧说明: 1)注意shutdown命令与后面的选项之间至少要有一个空格。 2)通常情况下,我们执行的shutdown命令为shutdown -h now或shutdown -r now。 【选项参数】 参数选项_type `help' to learn how to use xshell prompt.
文章浏览阅读1.4k次,点赞11次,收藏32次。之前小编用Python做GUI界面,首选就是。但是它们实现起来工作量及代码量太大,还要一步步设计调试界面排版等问题,而且界面最终呈现也不是特别美观,还有就是打包后太大等一系列问题。最近公司同事刚好有个相关界面开发需求,给我推荐了Python的新型Gui库,不仅可以做本地GUI程序,还可以同步生成一个Web Gui 服务,将Gui界面同步到浏览器上展示。它就是nicegui。NiceGui是一个简单易用的基于Python的Web-UI框架,其目的是使在Python中开发前端应用程序变得容易。_python linux web gui
文章浏览阅读1.8k次。使用pip命令安装Flask-RESTfulpip install flask-restful可以从GitHub上的页面下载开发版本。git clone https://github.com/flask-restful/flask-restful.gitcd flask-restfulpython setup.py developFlask-RESTful具有以下依赖项(如果使用pip将自动安装):Flask版本0.10或更高Flask-RESTful需要Python版本2.7、3._flask_restful install
文章浏览阅读707次。oozie编译一、版本oozie版本:4.3.1JDK:1.8HADOOP:2.7.7hive:hivepig:0.16.0sqoop:1.4.7spark:2.3.0hbase:0.94.27tomcat:8.0.53二、编译前需要修改的地方root pom.xmljdk版本修改 &amp;amp;amp;lt;properties&amp;amp;amp;gt; &amp;amp;amp;lt;targe_oozie 4.3.1 编译
文章浏览阅读966次,点赞2次,收藏2次。123_合川电信面试