繁体   English   中英

如何抛出 Spring @Valid “异常”?

[英]How to throw Spring @Valid “exception”?

我正在使用 Spring 来构建我的 REST api。 我的一种方法是用@Valid 装饰的。 这将产生一个 JSON,如下所示:

{
  "timestamp": "2019-11-04T19:07:08.387+0000",
  "status": 400,
  "error": "Bad Request",
  "errors": [
    {
      "codes": [
        "NotNull.customer.firstName",
        "NotNull.firstName",
        "NotNull.java.lang.String",
        "NotNull"
      ],
      "arguments": [
        {
          "codes": [
            "customer.firstName",
            "firstName"
          ],
          "arguments": null,
          "defaultMessage": "firstName",
          "code": "firstName"
        }
      ],
      "defaultMessage": "must not be null",
      "objectName": "customer",
      "field": "firstName",
      "rejectedValue": null,
      "bindingFailure": false,
      "code": "NotNull"
    }
  ],
  "message": "Validation failed for object='customer'. Error count: 1",
  "path": "/customers"
}

进行谷歌搜索,产生 HTTP 400 错误,我应该抛出 ResponseStatusException(HttpStatus.BAD_REQUEST);

这会产生一个像这样的 JSON:

{
  "timestamp": "2019-11-04T19:08:02.408+0000",
  "status": 400,
  "error": "Bad Request",
  "message": "400 BAD_REQUEST",
  "path": "/customers"
}

该消息显然很容易更改,但我更多的是询问如何获取 Errors 数组。 这似乎不在 ResponseStatusException 中?

我可以很容易地重新创建它,但我希望已经建立了一个?

编辑:这不是说的输入验证...这会为输入引发错误,但我需要先访问数据库以进行实际验证,因此该部分在我的服务层中并在以下情况下引发内部异常这是无效的。

如果您使用的是验证器,那么您可以使用配置文件(如validator.properties )自定义错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM