【发布时间】:2019-10-22 02:10:33
【问题描述】:
我想为我的自定义验证注释创建自定义消息。如果此验证失败,则会引发 MethodArgumentNotValidException。因为我为@RequestBody 设置了@Valid。
我创建@ControllerAdvice 来处理/覆盖 MethodArgumentNotValidException 消息。我单独有这个枚举错误类。所以每一个抛出这种异常的错误都会抛出和Invalid Param一样的消息
我的问题是可以排除我的自定义验证消息并抛出不同的消息吗?如何使这个@MyCustomAnnotation 抛出不同的异常消息?不属于 MethodArgumentNotValidException 消息。
我的自定义验证界面
@Documented
@Constraint(validatedBy = myValidator.class)
@Target({FIELD, METHOD, ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckMyCode{
String message() default "{my custom string message}";
Class<?> [] groups() default {};
Class<? extends Payload>[] payload() default {};
}
我的控制器建议方法来处理所有 MethodArgumentNotValidException 异常
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException exception, HttpHeaders headers, HttpStatus status, WebRequest request){
CustomClassError<Object> error = CustomClassError.failure(ErrCode.INVALID_PARAM);
return new ResponseEntity<Object>(error, new HttpHeaders(), HttpStatus.OK);
}
【问题讨论】:
标签: java rest spring-boot constraints bean-validation