Validator校验分为快速校验和全校验。
快速校验是当遇到第一个参数不符合条件时,立即停止校验程序,将校验不通过的信息返回到前端;
全校验是将前端传过来的参数全部进行校验,将所有不通过校验的信息一起返回到前端
实现方式:
第一步:在pom.xml中添加依赖
//validate的依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.11.Final</version> </dependency> //java的map转bean的工具类的依赖 <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.8.3</version> </dependency>
第二步:再java bean上写上校验规则的注解(更多思维校验规则可百度搜索)
例如:红色部分为检验规则,message为校验不通过时返回前端的信息
第三步:
编写validator的工具类
思路:获取validator对象,将需要校验的bean传入validator对象的validate方法中,返回的数据既是校验不通过的集合。获取validator对象时,有两种方式,failFast(true)时,获得的是快速校验的对象,failFast(false)时,获得是全校验对象。
Validator validator1=
Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
Validator validator2=
Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
代码参考:
import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import org.apache.commons.beanutils.BeanUtils; import org.hibernate.validator.HibernateValidator; public class DomainValidatorUtils { //获取validator对象 private static Validator validator1= Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator(); private static Validator validator2= Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator(); public static <T> Set<ConstraintViolation<T>> validateFast(Map<String, String> map,T domain) throws Exception { BeanUtils.populate(domain, map); System.out.println("domain.toString()"+domain.toString()); Set<ConstraintViolation<T>> validateResult= validator1.validate(domain); if(validateResult.size()>0) { System.out.println(validateResult.iterator().next().getMessage()+",校验失败"); } return validateResult; } public static <T> Set<ConstraintViolation<T>> validateAll(Map<String, String> map,T domain) throws Exception { BeanUtils.populate(domain, map); System.out.println("domain.toString()"+domain.toString()); Set<ConstraintViolation<T>> validateResult= validator2.validate(domain); if(validateResult.size()>0) { Iterator<ConstraintViolation<T>> it=validateResult.iterator(); while(it.hasNext()) { System.out.println(it.next().getMessage()+",校验失败"); } } return validateResult; } }