首页 > 解决方案 > 从默认错误列表中删除对象 Spring boot 验证

问题描述

我正在开发一个 Spring Boot 项目及其一个 RestController 和 web 服务

@ResponseBody CustomResponse method(final @PathVariable("tag") String tag, @Valid @RequestBody Payload payload, HttpServletResponse httpServletResponse) { }

如果 signatureHeight 为 Null 并且在 Payload 类中 signatureHeight 由@NotNull

{
  "timestamp": "2018-08-01T13:30:41.859+0000",
  "status": 400,
  "error": "Bad Request",
  "errors": [
    {
      "codes": [
        "Positive.Payload.signatureHeight",
        "Positive.signatureHeight",
        "Positive.int",
        "Positive"
      ],
      "arguments": [
        {
          "codes": [
            "Payload.signatureHeight",
            "signatureHeight"
          ],
          "arguments": null,
          "defaultMessage": "signatureHeight",
          "code": "signatureHeight"
        }
      ],
      "defaultMessage": "must be greater than 0",
      "objectName": "Payload",
      "field": "signatureHeight",
      "rejectedValue": 0,
      "bindingFailure": false,
      "code": "Positive"
    }
  ],
  "message": "Validation failed for object='Payload'. Error count: 10",
  "path": "/e-sign/sign-pdf/XML"
}

我想从错误 JsonArray 中出现的每个对象中删除errors.codesand 。errors.arguments

这是否可以在不实现自己的自定义错误对象的情况下轻松完成。

标签: springspring-bootspring-validator

解决方案


基本上,你可以。但是你需要实现异常处理。

在您的情况下,最常见的解决方案是 - 在控制器中声明下一个代码:

@ExceptionHandler({ConstraintViolationException.class, MethodArgumentNotValidException.class})
@ResponseBody
public ReturnType handleValidationException() {
    return ReturnType.somePreparedMessage();
}

推荐阅读