Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring验证错误的文档_Java_Spring_Validation_Error Handling_Bean Validation - Fatal编程技术网

Java Spring验证错误的文档

Java Spring验证错误的文档,java,spring,validation,error-handling,bean-validation,Java,Spring,Validation,Error Handling,Bean Validation,Spring总是提供非常有用的默认值来处理验证错误。但有时看起来很难定制这些。在我的例子中,我有一个自定义验证,它使用javascript函数验证域对象中的字段。默认验证错误生成4个消息代码,使用对象名称、字段名称、字段类型和验证类型。到现在为止,一直都还不错。但是我想添加一个额外的代码,其中包含作为组件的js函数的名称。我怎么能这么做 或者更一般地说,我的问题是:我在哪里可以找到Spring构建默认错误消息的方式的文档,以及如何操作它们 在我的例子中,我得到如下输出: { "timesta

Spring总是提供非常有用的默认值来处理验证错误。但有时看起来很难定制这些。在我的例子中,我有一个自定义验证,它使用javascript函数验证域对象中的字段。默认验证错误生成4个消息代码,使用对象名称、字段名称、字段类型和验证类型。到现在为止,一直都还不错。但是我想添加一个额外的代码,其中包含作为组件的js函数的名称。我怎么能这么做

或者更一般地说,我的问题是:我在哪里可以找到Spring构建默认错误消息的方式的文档,以及如何操作它们

在我的例子中,我得到如下输出:

{
  "timestamp": 1457092927829,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.web.bind.MethodArgumentNotValidException",
  "errors": [
    {
      "codes": [
        "JSValidated.order.validFrom",
        "JSValidated.validFrom",
        "JSValidated.java.time.ZonedDateTime",
        "JSValidated"
      ],
      "arguments": [
        {
          "codes": [
            "order.validFrom",
            "validFrom"
          ],
          "arguments": null,
          "defaultMessage": "validFrom",
          "code": "validFrom"
        },
        "checkOrder",
        "static/OrderValidator.js"
      ],
      "defaultMessage": "validation checkValidFrom failed",
      "objectName": "order",
      "field": "validFrom",
      "rejectedValue": 1196586930,
      "bindingFailure": false,
      "code": "JSValidated"
    },
    {
      "codes": [
        "NotEmpty.order.id",
        "NotEmpty.id",
        "NotEmpty.java.lang.String",
        "NotEmpty"
      ],
      "arguments": [
        {
          "codes": [
            "order.id",
            "id"
          ],
          "arguments": null,
          "defaultMessage": "id",
          "code": "id"
        }
      ],
      "defaultMessage": "may not be empty",
      "objectName": "order",
      "field": "id",
      "rejectedValue": null,
      "bindingFailure": false,
      "code": "NotEmpty"
    }
  ],
  "message": "Validation failed for object='order'. Error count: 2",
  "path": "/order"
}

如何添加或更改代码?如何添加或更改参数列表?所有文档都记录在哪里?

您可以使用@ExceptionHandler使用全局异常处理程序 您可以定义应该处理哪些异常。您可以访问抛出的异常,该异常还包含验证错误。 创建自己的错误类,该类包含要返回的属性。 将验证错误映射到错误对象中,并将其与您选择的HTTP状态一起返回。 BindingException是我从验证中得到的一个异常,处理程序如下所示:

@ExceptionHandler(BindException.class)
@ResponseBody
public ResponseEntity<Object> handle(HttpServletRequest req, BindException ex) {        
    ExceptionResponse response = new ExceptionResponse(ex);
    return new ResponseEntity<>(response, HttpStatus.EXPECTATION_FAILED);
}

您可以使用@ExceptionHandler使用全局异常处理程序 您可以定义应该处理哪些异常。您可以访问抛出的异常,该异常还包含验证错误。 创建自己的错误类,该类包含要返回的属性。 将验证错误映射到错误对象中,并将其与您选择的HTTP状态一起返回。 BindingException是我从验证中得到的一个异常,处理程序如下所示:

@ExceptionHandler(BindException.class)
@ResponseBody
public ResponseEntity<Object> handle(HttpServletRequest req, BindException ex) {        
    ExceptionResponse response = new ExceptionResponse(ex);
    return new ResponseEntity<>(response, HttpStatus.EXPECTATION_FAILED);
}

这是方法getErrorAttributes(RequestAttributes)结果的json序列化, 类的布尔includeStackTrace)

可以扩展此类以添加其他属性


代码和消息是由验证器添加的,如果您想更改它们,您需要自定义使用的验证器。

这是方法getErrorAttributes(RequestAttributes RequestAttributes, 类的布尔includeStackTrace)

可以扩展此类以添加其他属性


代码和消息是由验证器添加的,如果您想更改它们,则需要自定义使用的验证器。

如果这些验证基于JSR 303注释(即,如果您使用来自包的注释
javax.validation
),然后,您可以使用每个验证批注上可用的属性
message
修改默认消息。是的,谢谢。代码和参数如何?如果这些验证基于JSR 303注释(即,如果您使用包
javax.validation
中的注释),那么您可以使用每个验证注释上可用的属性
message
修改默认消息。是的,谢谢。代码和参数呢?