package com.gkhy.exam.institutionalaccess.utils; import org.hibernate.validator.HibernateValidator; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; public class ValidatorUtils { private static Validator validatorFast= Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator(); private static Validator validatorAll= Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator(); /** * 校验遇到第一个不合法的字段直接返回不合法信息,后续字段不再校验 * @param domain * @return * @param * @throws Exception */ public static String validateFast(T domain) throws Exception{ Set> validateResult=validatorFast.validate(domain); if(!validateResult.isEmpty()){ return validateResult.iterator().next().getPropertyPath()+":"+validateResult.iterator().next().getMessage(); } return ""; } /** * 校验所有字段并返回不合法字段信息 * @param domain * @return * @param * @throws Exception */ public static List validateAll(T domain) throws Exception{ List messages=new ArrayList<>(); Set> validateResult=validatorAll.validate(domain); if(!validateResult.isEmpty()){ Iterator> it=validateResult.iterator(); while (it.hasNext()){ ConstraintViolation cv=it.next(); messages.add(cv.getPropertyPath()+":"+cv.getMessage()); } } return messages; } }