【发布时间】:2016-06-18 07:18:04
【问题描述】:
Spring 总是提供非常有用的默认值来处理验证错误。但有时看起来很难定制这些。就我而言,我有一个自定义验证,它使用 javascript 函数来验证域对象中的字段。默认验证错误产生 4 个消息代码,它们使用对象名称、字段名称、字段类型和验证类型。到目前为止,一切都很好。但我想添加一个附加代码,其中包含 js-function 的名称作为组件。我怎么能这样做?
或者更笼统地说,我的问题是:我在哪里可以找到有关 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"
}
如何添加或更改代码?如何添加或更改参数列表?所有的东西都记录在哪里?
【问题讨论】:
-
如果这些验证基于 JSR 303 注释(即,如果您使用包
javax.validation中的注释),那么您可以使用每个验证注释上可用的属性message修改默认消息. -
好的,谢谢。代码和参数呢?
标签: java spring validation error-handling bean-validation