Java validation-api 2.0 报错:No validator could be found for constraint 'javax.validation.constraints.NotBlank'
项目对输入参数验证使用了 validation-api:2.0
组件,使用比较方便,只需要在入参的 VO 或者 DTO 对象前加一个 @Validated
既开启了参数验证。之后在 VO 对象属性前加上 @NotBlank(message = "xxx不能为空")
,就可以实现数据的校验,并返回错误内容。
当然,组件返回的数据需要通过全局异常处理类处理一下(不然返回结构较为复杂):
@RestControllerAdvice
public class GlobalExceptionHandler {
...
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResultDTO handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
logger.error(e.getMessage(), e);
String message = e.getBindingResult().getFieldError().getDefaultMessage();
return ResultDTO.error(message);
}
}
现对 VO 对象增加了一些属性,包括了 BigDecimal 类型,都是用 @NotBlank
来校验,然后就报错了:No validator could be found for constraint 'javax.validation.constraints.NotBlank'
。
百度了一圈原来 @NotBlank
只能用来验证字符串,Hibernate-Validator(数据校验框架)。
这边没有最小值、最大值之类的限制,所以更换成 @NotNull
之后就可以了。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。