问题:报错框架问题
目的:只需要关键提示词;
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个字符]]修改代码如下:
 @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 对象表示一个字段验证错误,包含了验证失败的详细信息。
来看一下这些对象的结构:
-  MethodArgumentNotValidException:- 该异常包含一个 BindingResult对象,可以通过getBindingResult()方法获取。
 
- 该异常包含一个 
-  BindingResult:- 这是一个接口,通常的实现类是 BeanPropertyBindingResult。
- 通过 getFieldErrors()方法可以获取一个FieldError对象的列表。
 
- 这是一个接口,通常的实现类是 
-  FieldError:- 该对象包含了验证失败的详细信息,包括字段名、被拒绝的值、错误代码和默认错误消息等。
- 你可以通过 getField(),getRejectedValue(),getCodes(), 和getDefaultMessage()等方法来获取详细信息。
 
具体到你的例子中的异常信息,它的类型是 MethodArgumentNotValidException,其中包含了一个 BindingResult 对象,而 BindingResult 对象包含了一系列的 FieldError 对象,每个 FieldError 对象表示一个验证失败的字段及其详细信息。