content = defaultMessage;
}
return content;
}
}
不知道你有没有发现messageSource.setBasename(“i18n/messages”);这行代码,很重要,i18n表示你们文件目录,messages表示你配置文件的前缀,比如我的:messages_en_US.properties、messages_zh_CN.properties、messages_fr_FR.properties、messages.properties。
4.新建测试代码
package com.ymy.controller;
import com.ymy.vo.ResultVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class TestController {
@GetMapping(value = “/test”)
public ResultVo test(){
ResultVo resultVo = ResultVo.faild(“code-0001”);
return resultVo;
}
}
这里我们看到引用了ResultVo,源码如下:
package com.ymy.vo;
import com.ymy.utils.I18nUtil;
import lombok.Getter;
@Getter
public class ResultVo {
private String code;
private String msg;
private T data;
private String createTime ;
private ResultVo(String code){
this.code = code;
setCode(code);
}
public void setCode(String code) {
String message = null;
try {
message =I18nUtil.getMessage(code);
}catch (Exception e){
message = code;
}
this.code = code;
this.msg = message;
}
/**
-
默认成功返回
-
@param
-
@return
*/
public static ResultVo OK(){
return new ResultVo(“SUCCESS”);
}
/**
-
返回只带code的信息
-
@param code
-
@param
-
@return
*/
public static ResultVo faild(String code){
return new ResultVo(code);
}
}
如果ResultVo中的@Getter报错的话,可以在pom.xml中引入lombok的依赖:
org.projectlombok
lombok
true
5.测试
中文:
如果中文乱码,推荐你将中文转换成unicode,在写往配置文件中。
英文:
法文:
是不是很简单?就是这么的丝滑,我们现在在升级一下,我们现在需要提示:对不起,张三,密码错误,剩余5次,这里面有两个动态信息,张三、5 ,这两个都是会实时发生改变的,那我们如何处理呢?
不知道你还记得国际化工具类中的这个方法吗?
/**
-
返回带参数的提示信息
-
@param code
-
@param args
-
@return
*/
public static String getMessage(String code, Object[] args) {
return getMessage(code, args, “”);
}
我们一起改造一下代码:
controller:
package com.ymy.controller;
import com.ymy.vo.PwdVo;
import com.ymy.vo.ResultVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@RestController
@Slf4j
public class TestController {
private static Integer count = 5;
/**
-
密码校验
-
@param pwdVo
-
@return
*/
@RequestMapping(value = “checkPwd”,method = RequestMethod.POST)
public ResultVo checkPwd(@RequestBody PwdVo pwdVo){
//这里我就不做判空处理了,因为判空处理还需要往配置文件中添加控的提示信息,这里主要展示带参数的提示信息
if(!“123456”.equals(pwdVo.getPwd())){
count–;
return ResultVo.faild(“code-0002”,pwdVo.getUserName(),count);
}
count = 5;
return ResultVo.OK();
}
@GetMapping(value = “/test”)
public ResultVo test(){
ResultVo resultVo = ResultVo.faild(“code-0001”);
return resultVo;
}
}
PwdVo:
package com.ymy.vo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class PwdVo {
/**
- 用户名
*/
private String userName;
/**
- 密码
*/
private String pwd;
}
ReslutVo:
package com.ymy.vo;
import com.ymy.utils.I18nUtil;
import lombok.Getter;
@Getter
public class ResultVo {
private String code;
private String msg;
private T data;
private String createTime ;
// private ResultVo(String code){
// this.code = code;
// setCode(code);
// }
private ResultVo(String code,Object … args){
this.code = code;
setCode(code,args);
}
public void setCode(String code,Object … args) {
String message = null;
try {
message =I18nUtil.getMessage(code,args);
}catch (Exception e){
message = code;
}
this.code = code;
this.msg = message;
}
/*
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
-
默认成功返回
-
@param
-
@return
*/
public static ResultVo OK(){
return new ResultVo(“code-0003”);
}
/**
-
返回只带code的信息
-
@param code
-
@param
-
@return
*/
public static ResultVo faild(String code){
return new ResultVo(code);
}
/**
-
返回带参数的提示信息
-
@param code
-
@param
-
@return
*/
public static ResultVo faild(String code,Object … arg){
return new ResultVo(code,arg);
}
}
语言配置文件: