工具 - JRS303入参校验
前提:
<!--工具集合-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.2</version>
</dependency>
<!-- 实体校验-->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
方式一
朋友推荐的校验方式,我也一直在使用的方式,先分享工具
package com.khoodys.jingdezhen.utils;
import cn.hutool.core.util.StrUtil;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import java.util.Set;
public class Jrs303Util {
public static String check(Object obj) {
if (null == obj) {
return "入参信息不能为空";
}
Set<ConstraintViolation<Object>> validResult = Validation.buildDefaultValidatorFactory().getValidator().validate(obj);
if (null != validResult && validResult.size() > 0) {
StringBuilder sb = new StringBuilder();
for (ConstraintViolation<Object> constraintViolation : validResult) {
if (StrUtil.isNotBlank(constraintViolation.getMessage())) {
sb.append(constraintViolation.getMessage()).append("、");
} else {
sb.append(constraintViolation.getPropertyPath().toString()).append("不符合要求、");
}
}
if (sb.lastIndexOf("、") == sb.length() - 1) {
sb.delete(sb.length() - 1, sb.length());
}
return sb.toString();
}
return null;
}
}
小提示 这种方式如果前端没有加校验,后端返回的数据可能会很多,影响用户体验,建议获取到信息直接返回。
使用方式
/**
* 标准名称(含代码)
*/
@NotBlank(message = "标准名称不允许为空")
private String standardName;
在接口中可以直接使用
@PostMapping("/add")
public ResultVO<String> addAcademicTeaching(@RequestBody AcademicTeaching academicTeaching) {
String message = Jrs303Util.check(academicTeaching);
if (StrUtil.isNotBlank(message)) {
return ResultVO.error(message);
}
//...
return ResultVO.success();
}
方式二
推荐地址:
作者:稚友22
链接:https://www.jianshu.com/p/d2ddd856cce2
来源:简书
这种是通过原生注解的形式,将错误信息通过全局异常拦截,封装后返回