文章目录
1、什么是validator?
在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码有三个麻烦:
验证代码繁琐,重复劳动
方法内代码显得冗长
每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码
Hibernate Validator就用于解决这种问题,他是一种参数校验的框架, Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
2、准备工作
(1) Springboot项目中,它被集成在web包里
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
(2) 编写校验结果存储类(存储错误信息)
import org.apache.tomcat.util.buf.StringUtils;
import java.util.HashMap;
import java.util.Map;
public class ValidationResult {
private boolean hasErrors;
private Map<String,String> errorMsgMap = new HashMap<>();
public boolean isHasErrors() {
return hasErrors;
}
public void setHasErrors(boolean hasErrors) {
this.hasErrors = hasErrors;
}
public Map<String, String> getErrorMsgMap() {
return errorMsgMap;
}
public void setErrorMsgMap(Map<String, String> errorMsgMap) {
this.errorMsgMap = errorMsgMap;
}
//通过字符串信息获取错误结果的msg方法
public String getErrMsg(){
return errorMsgMap.toString();
}
}
(3) 编写ValidatorImpl实现类,实现错误检查,并且将错误结果存储在ValidationResult
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
&