关于后端:使用Validated报错-Validation-failed-for-argument-0

应用 @Validated加@NotBlank 校验 字符串不能为空报错 Validation failed for argument [0] …..,应该是多个入参导致的

解决办法:

1 版本问题,查看版本是否抵触或者过低

2 在入参减少减少 BindingResult bindingResult

public ApiResult<Object> logon(@Validated(APPLoginGroups.class) @RequestBody StUsers stUsers, BindingResult bindingResult, @RequestParam String code)

在办法中减少代码

        if (bindingResult.hasErrors()) {
            return ApiResult.fail(bindingResult.getFieldError().getDefaultMessage());
          }

2的简化版

当然因为 Validation 报错是固定的一个类,能够应用全局异样进行捕捉同一返回

public ApiResult<Object> logon(@Validated(APPLoginGroups.class) @RequestBody StUsers stUsers, @RequestParam String code)

全局异样捕捉

    /**
     * @Validated 自定义验证异样,同一返回
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
        //log.error(e.getMessage(), e);
        String message = e.getBindingResult().getFieldError().getDefaultMessage();
        return ApiResult.fail(message);
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理