问题:报错框架问题
目的:只需要关键提示词;
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
对象,而 BindingResult
对象包含了一系列的 FieldError
对象,每个 FieldError
对象表示一个验证失败的字段及其详细信息。
因篇幅问题不能全部显示,请点此查看更多更全内容