@JsonFormat
-
后端返回Vo实体类,转化属性时间
-
通过注解转化属性时间格式
在时间属性上加上
JsonFormat
注解,然后就可以以自定义字符串形式返回格式了-
pattern
为格式 -
timezone
时区
-
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
- 效果如下
@Valid
-
用于参数校验
-
可以配合的注解
@NotNull
@NotBlank
@Max
如图
- 常用的三种使用方法介绍
User
参数类
@Data
public class User {
@NotNull(message="id不能为空")
private Integer id;
@NotBlank(message="姓名不能为空")
private String name;
@Max(message="年龄不能大于120岁", value = 120)
@Min(message="年龄不能小于0岁", value = 0)
private Integer age;
@Future
private Date createTime;
- 直接在RequestBody里的参数类添加@Valid注解,需要统一处理异常
@PostMapping("/test1")
public Object test1(@RequestBody @Valid User user) {
return "操作成功!";
}
- 在RequestBody里的参数类添加@Valid注解,增加校验结果参数BindingResult
@PostMapping("/test2")
public Object test2(@RequestBody @Valid User user, BindingResult bindingResult) {
// 参数校验
if (bindingResult.hasErrors()) {
String messages = bindingResult.getAllErrors()
.stream()
.map(ObjectError::getDefaultMessage)
.reduce((m1, m2) -> m1 + ";" + m2)
.orElse("参数输入有误!");
throw new IllegalArgumentException(messages);
}
return "操作成功!";
}
- 自行判断
@PostMapping("/test3")
public Object test3(@RequestBody User user) {
// 参数校验
validate(user);
return "操作成功!";
}
private void validate(@Valid User user) {
Set<ConstraintViolation<@Valid User>> validateSet = Validation.buildDefaultValidatorFactory()
.getValidator()
.validate(user, new Class[0]);
if (!CollectionUtils.isEmpty(validateSet)) {
String messages = validateSet.stream()
.map(ConstraintViolation::getMessage)
.reduce((m1, m2) -> m1 + ";" + m2)
.orElse("参数输入有误!");
throw new IllegalArgumentException(messages);
}
}
-
注意
使用校验类注解时
如果参数是基础类型,可以直接使用,
如果参数是对象,需要添加
@Valid
注解,不然在参数对象里的校验不生效
网友评论