import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
import java.util.Set;
import java.util.StringJoiner;
public class ValidatorUtil {
public static void doValidate(Object o) {
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(o, Default.class);
if (!constraintViolations.isEmpty()) {
StringBuilder msg = new StringBuilder();
for (ConstraintViolation<Object> constraint : constraintViolations) {
msg.append(constraint.getMessage()).append(".");
}
throw new RuntimeException(msg.toString());
}
}
public static void doValidate(Object o, String[] validateAttr) {
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
StringJoiner sj = new StringJoiner(";");
for (String s : validateAttr) {
Set<ConstraintViolation<Object>> constraintViolations = validator.validateProperty(o, s, Default.class);
if (!constraintViolations.isEmpty()) {
StringBuilder msg = new StringBuilder();
for (ConstraintViolation<Object> constraint : constraintViolations) {
msg.append(constraint.getMessage()).append(".");
}
sj.add(msg.toString());
}
}
if(StringUtils.isNotBlank(sj.toString())){
throw new RuntimeException(sj.toString());
}
}
}
第一个方法是直接传入对象,对象上面有validate相关注解会自动进行校验,
第二个方法第一个参数是对象,第二个是对象需要进行校验的属性数组,可以指定对哪些属性进行校验。