springmvc全局异常处理-BindingResult

文章讲述了在SpringMVC中,@Valid和@Validated注解用于参数绑定和校验,它们可以应用在方法参数和成员变量上。不同请求方式可能会抛出不同的异常,如BindException用于表单提交,而MethodArgumentNotValidException处理JSON请求体的校验失败。当出现这些异常时,可以通过BindingResult对象获取校验错误信息,如字段名和错误消息,以便提供精确的反馈给用户。

参数绑定校验注解

@Valid @Validatd 注解均可使用,可以注解在方法形参与成员变量上,但效果有细微差异;

根据请求方式的不同而抛出不同的异常

表单提交 异常处理类 BindException

public class BindException extends Exception implements BindingResult {
    private final BindingResult bindingResult;

    public BindException(BindingResult bindingResult) {
        Assert.notNull(bindingResult, "BindingResult must not be null");
        this.bindingResult = bindingResult;
    }
    
    ...

请求体(json)提交 异常处理类 MethodArgumentNotValidException

public class MethodArgumentNotValidException extends BindException {
    private final MethodParameter parameter;

    public MethodArgumentNotValidException(MethodParameter parameter, BindingResult bindingResult) {
        super(bindingResult);
        this.parameter = parameter;
        
    ...
    }
    ```
   处理以上异常时可以先获取·bindingResult· 对象,校验异常信息存储再该对象中;

```java
//获取字段校验异常信息
FieldError fieldError = exception.getBindingResult().getFieldError();

//获取校验不通过的字段
fieldError.getField();

//获取校验不通过的提示信息
fieldError.getDefaultMessege();

在同一异常处理类中可以响应以上信息,传递更精确的反馈;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值