工具 - JRS303入参校验
时间:2023-03-06 05:30:00
工具 - JRS303入参校验
前提:
<dependency> <groupId>cn.hutoolgroupId> <artifactId>hutool-allartifactId> <version>5.5.2version> dependency> <dependency> <groupId>org.hibernate.validatorgroupId> <artifactId>hibernate-validatorartifactId> 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
来源:简书
这种是通过原生注解的形式,将错误信息通过全局异常拦截,封装后返回