例如:excel文件导入,controller 方法上加入注解校验,对于文件类型MultipartFile,无法校验。
解决:excel读取并转成对应bo类,通过在bo类上加入注解,实现对数据校验,不同一个个判断!!如何获取处理注解?
package com.xxx.common.core.utils;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @Description: 对象参数验证工具, 解决非controller层数据校验问题, @Validated、@Valid
*/
public class ValidationUtils {
private static final Validator validator;
static {
validator = Validation.buildDefaultValidatorFactory().getValidator();
}
/**
* 校验对象
*
* @param object 待校验对象
* @param groups 待校验的组
*/
public static String validateEntity(Object object, Class<?>... groups) {
if (object != null) {
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
if (!constraintViolations.isEmpty()) {
return constraintViolations.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining("||"));
}
}
return null;
}
public static void validateWithException(Object object, Class<?>... groups)
throws ConstraintViolationException {
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
if (!constraintViolations.isEmpty()) {
throw new ConstraintViolationException(constraintViolations);
}
}
}