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 <T>
|
* @throws Exception
|
*/
|
public static <T> String validateFast(T domain) throws Exception{
|
Set<ConstraintViolation<T>> validateResult=validatorFast.validate(domain);
|
if(!validateResult.isEmpty()){
|
return validateResult.iterator().next().getPropertyPath()+":"+validateResult.iterator().next().getMessage();
|
}
|
return "";
|
}
|
|
/**
|
* 校验所有字段并返回不合法字段信息
|
* @param domain
|
* @return
|
* @param <T>
|
* @throws Exception
|
*/
|
public static <T> List<String> validateAll(T domain) throws Exception{
|
List<String> messages=new ArrayList<>();
|
Set<ConstraintViolation<T>> validateResult=validatorAll.validate(domain);
|
if(!validateResult.isEmpty()){
|
Iterator<ConstraintViolation<T>> it=validateResult.iterator();
|
while (it.hasNext()){
|
ConstraintViolation<T> cv=it.next();
|
messages.add(cv.getPropertyPath()+":"+cv.getMessage());
|
}
|
}
|
return messages;
|
}
|
|
|
}
|