MethodArgumentNotValidException提取关键报错信息返回

问题:报错框架问题

目的:只需要关键提示词;

bash 复制代码
e.message:Validation failed for argument [0] in com.victorlamp.hviot.common.pojo.CommonResult<com.victorlamp.hviot.service.management.entity.thing.Thing> com.victorlamp.hviot.service.management.controller.thing.ThingController.createThing(com.victorlamp.hviot.service.management.controller.thing.vo.ThingCreateReqVO): [Field error in object 'thingCreateReqVO' on field 'name': rejected value [M]; codes [Size.thingCreateReqVO.name,Size.name,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [thingCreateReqVO.name,name]; arguments []; default message [name],32,2]; default message [设备名称长度为2-32个字符]]

修改代码如下:

java 复制代码
 @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseDTO exceptionHandler(MethodArgumentNotValidException e) {
        BindingResult bindingResult = e.getBindingResult();
        List<FieldError> fieldErrors = bindingResult.getFieldErrors();
        String errorMessage = fieldErrors.stream()
                .findFirst()
                .map(FieldError::getDefaultMessage)
                .orElse("Invalid request");
        ResponseDTO result = ResponseDTO.fail(ExceptionTemplate.INVALID_REQUEST_COMMON, errorMessage);
        log.error("invalid request error", e);
        return result;
    }

MethodArgumentNotValidException 中的错误信息包含了字段验证错误的详细信息。具体地说,这些详细信息被包含在 BindingResult 对象中,而 BindingResult 对象包含一个 FieldError 对象的列表。每个 FieldError 对象表示一个字段验证错误,包含了验证失败的详细信息。

来看一下这些对象的结构:

  1. MethodArgumentNotValidException

    • 该异常包含一个 BindingResult 对象,可以通过 getBindingResult() 方法获取。
  2. BindingResult

    • 这是一个接口,通常的实现类是 BeanPropertyBindingResult
    • 通过 getFieldErrors() 方法可以获取一个 FieldError 对象的列表。
  3. FieldError

    • 该对象包含了验证失败的详细信息,包括字段名、被拒绝的值、错误代码和默认错误消息等。
    • 你可以通过 getField(), getRejectedValue(), getCodes(), 和 getDefaultMessage() 等方法来获取详细信息。

具体到你的例子中的异常信息,它的类型是 MethodArgumentNotValidException,其中包含了一个 BindingResult 对象,而 BindingResult 对象包含了一系列的 FieldError 对象,每个 FieldError 对象表示一个验证失败的字段及其详细信息。

相关推荐
带刺的坐椅7 小时前
Solon AI Skills 会是 Agent 的未来吗?
java·agent·langchain4j·solon-ai
jacGJ7 小时前
记录学习--文件读写
java·前端·学习
哈哈不让取名字7 小时前
基于C++的爬虫框架
开发语言·c++·算法
花间相见7 小时前
【JAVA开发】—— Nginx服务器
java·开发语言·nginx
扶苏-su8 小时前
Java---Properties 类
java·开发语言
cypking8 小时前
四、CRUD操作指南
java
2301_780669869 小时前
文件字节流输出、文件复制、关闭流的方法
java
一条咸鱼_SaltyFish9 小时前
远程鉴权中心设计:HTTP 与 gRPC 的技术决策与实践
开发语言·网络·网络协议·程序人生·http·开源软件·个人开发
我即将远走丶或许也能高飞9 小时前
vuex 和 pinia 的学习使用
开发语言·前端·javascript
沐知全栈开发10 小时前
SQL LEN() 函数详解
开发语言