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