环境
springboot 2.4.1
validation 效验post or get 方式表单方式提交转对象,效验出错,不进 MethodArgumentNotValidException or ConstraintViolationException 异常处理。进全局异常处理
异常
org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'testBean' on field 'uid': rejected value [1]; codes [Null.testBean.uid,Null.uid,Null.java.lang.Integer,Null]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [testBean.uid,uid]; arguments []; default message [uid]]; default message [自增ID,不能指定]
bean
@Data
public class TestBean {
@ApiModelProperty("自增id")
@Null(message = "自增ID,不能指定")
private Integer uid;
@ApiModelProperty("名称")
@NotBlank
private String username;
@ApiModelProperty("地址")
@NotBlank(message = "地址不能为空")
private String address;
}
Controller
//不管是get还是post 一样
@PostMapping("/insert3")
public R insert3(@Valid TestBean testBean ) {
return success(testBean.toString());
}
解决方法
方法一 org.springframework.validation.BindException
@ExceptionHandler(BindException.class)
public R handleValidation(BindException e) {
System.out.println("BindException");
for (ObjectError error : e.getBindingResult().getAllErrors()) {
return R.failed(error.getDefaultMessage());
}
return R.failed("请求参数有误");
}
方法二
//方法中加入BindingResult ,效验错误进入ConstraintViolationException
@PostMapping("/insert3")
public R insert3(@Valid TestBean testBean , BindingResult bindingResult) {
return success(testBean.toString());
}