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();
/**
* 校验遇到第一个不合法的字段直接返回不合法字段,后续字段不再校验
*/
public static <T> void validateFast(T domain) throws IllegalArgumentException {
Set<ConstraintViolation<T>> validateResult = validatorFast.validate(domain);
if(validateResult.size() > 0) {
String errorMsg = "(" + validateResult.iterator().next().getPropertyPath() + ")" + validateResult.iterator().next().getMessage();
throw new IllegalArgumentException(errorMsg);
}
}
/**
* 校验所有字段并返回不合法字段
*/
public static <T> void validateAll(T domain) throws IllegalArgumentException {
Set<ConstraintViolation<T>> validateResult = validatorAll.validate(domain);
if(validateResult.size() > 0) {
Iterator<ConstraintViolation<T>> it = validateResult.iterator();
List<String> errorMsgList = new ArrayList<>();
while(it.hasNext()) {
ConstraintViolation<T> cv = it.next();
errorMsgList.add("(" +cv.getPropertyPath() + ")" + cv.getMessage());
}
throw new IllegalArgumentException(String.join(",",errorMsgList));
}
}
}
HibernateValidator手动调用校验
最新推荐文章于 2023-08-16 00:14:11 发布