• 使用方法

@Valid、@Validated  、正则验证工具

 

  • 源码跟踪:
springframework.web--》WebDataBinder-》validate
springframework validation---RequestResponseBodyMethodProcessor--》resolveArgument--》validateIfApplicable
hibernate validator---ConstraintHelper
  • 自己实现工具类
 1 import com.amp.base.exception.BusinessException;
 2 import com.google.common.base.Joiner;
 3 
 4 import javax.validation.ConstraintViolation;
 5 import javax.validation.Validation;
 6 import javax.validation.Validator;
 7 import java.util.*;
 8 
 9 /**
10  * 校验工具类
11  */
12 public class ValidatorUtil {
13     private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
14 
15     /**
16      * hibernate validator校验
17      *
18      * @param obj 校验对象
19      * @return void
20      */
21     public static <T> void validate(T obj) {
22         Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
23         List<String> list = new ArrayList<>();
24         // 抛出检验异常
25         if (constraintViolations.size() > 0) {
26             for (ConstraintViolation constraintViolation : constraintViolations) {
27                 list.add(constraintViolation.getMessage());
28             }
29         }
30         if (list != null && list.size() > 0) {
31             throw new BusinessException(Joiner.on(",").skipNulls().join(list));
32         }
33     }
34 
35     /**
36      * 校验bean返回map形式的校验结果
37      *
38      * @param obj bean
39      * @return java.util.Map<java.lang.String , java.lang.String>
40      */
41     public static <T> Map<String, String> validateToMap(T obj) {
42         Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
43         Map<String, String> map = new HashMap<>(constraintViolations.size());
44         if (constraintViolations.size() > 0) {
45             for (ConstraintViolation constraintViolation : constraintViolations) {
46                 map.put(constraintViolation.getPropertyPath().toString(), constraintViolation.getMessage());
47             }
48         }
49         return map;
50     }
51 
52     /**
53      * 校验bean返回map形式的校验结果
54      *
55      * @param obj bean
56      * @return java.util.Map<java.lang.String , java.lang.String>
57      */
58     public static <T> List<String> validateToList(T obj) {
59         Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
60         List<String> list = new ArrayList<>();
61         if (constraintViolations.size() > 0) {
62             for (ConstraintViolation constraintViolation : constraintViolations) {
63                 list.add(constraintViolation.getMessage());
64             }
65         }
66         return list;
67     }
68     /**
69      * 校验bean返回String形式的校验结果
70      *
71      * @param obj bean
72      * @return java.util.Map<java.lang.String , java.lang.String>
73      */
74     public static <T> String validateToString(T obj) {
75         Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
76         List<String> list = new ArrayList<>();
77         if (constraintViolations.size() > 0) {
78             for (ConstraintViolation constraintViolation : constraintViolations) {
79                 list.add(constraintViolation.getMessage());
80             }
81         }
82         return Joiner.on(",").skipNulls().join(list);
83     }
84 }
View Code

相关文章: