使用 @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);
    }

不语
4 声望1 粉丝