kongzy
2024-10-12 3402a6cdef63a87cf046a8bbfdc2898bb842c93f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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;
    }
 
 
}