参考
juejin.cn/post/710913…
校验工具类
import org.apache.commons.collections.CollectionUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
import java.util.stream.Collectors;
public class ConsumerValidationUtils {
private static final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
private static final String DELIMITER = " ; ";
public static <T> void validateEntity(T validateObj) {
Set<ConstraintViolation<T>> validateResult = validator.validate(validateObj, new Class[0]);
if (!CollectionUtils.isEmpty(validateResult)) {
String errorMessage = validateResult.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(DELIMITER));
throw new BusinessException(errorMessage);
}
}
public static <T> void validateProperty(T validateObj, String propertyName) {
Set<ConstraintViolation<T>> validateResult = validator.validateProperty(validateObj, propertyName, new Class[0]);
if (!CollectionUtils.isEmpty(validateResult)) {
String errorMessage = validateResult.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(DELIMITER));
throw new BusinessException(errorMessage);
}
}
}
统一异常处理
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler implements ResponseBodyAdvice {
@ExceptionHandler(value = {BindException.class, ValidationException.class, MethodArgumentNotValidException.class})
@ResponseBody
public ResultModel handleValidatedException(Exception e) {
ResultModel instance = ResultModel.instance();
String errorMessage = "";
if (e instanceof MethodArgumentNotValidException) {
MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
errorMessage = ex.getBindingResult().getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "));
} else if (e instanceof ConstraintViolationException) {
ConstraintViolationException ex = (ConstraintViolationException) e;
errorMessage = ex.getConstraintViolations().stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining("; "));
} else if (e instanceof BindException) {
BindException ex = (BindException) e;
errorMessage = ex.getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "));
}
instance.setMessage(errorMessage);
return instance;
}
}
| @Length | 长度必须在指定范围内 | |
|---|
| @NotNull | 被注解的元素不行不为null | |
| @NotBlank | 字符串不能为null,字符串trim()后也不能等于“” | |
| @NotEmpty | 不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“” | |