
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