package com.nova.sankuai.infra.utils; import org.springframework.stereotype.Component; import javax.validation.ConstraintViolation; import javax.validation.Validator; import java.util.Set; import java.util.stream.Collectors; @Component public class Jsr303Validator { private final Validator validator; public Jsr303Validator(Validator validator) { this.validator = validator; } public Set> getConstraintViolation(T pojo) { return validator.validate(pojo); } public String getValidationMsg(T pojo) { Set> set = getConstraintViolation(pojo); if (set.size() == 0) { return null; } return set.stream() .map(it -> String.format("%s: %s", it.getPropertyPath(), it.getMessage())) .collect(Collectors.joining(", ")); } public boolean isLegal(T pojo) { return getConstraintViolation(pojo).size() == 0; } }