【发布时间】:2020-09-25 11:17:04
【问题描述】:
我正在学习 Spring Boot 应用程序中的 Hibernate 验证,并且我有一个 Rest 控制器和一个 POST 方法。当我发出请求时,如果一个字段未成功验证,客户端应该收到 400 Bad Request 并在正文中收到类似“验证失败”的消息。我尝试这样做,但消息没有来。
这是身体:
{
"timestamp": "2020-06-06T07:56:11.377+00:00",
"status": 400,
"error": "Bad Request",
"message": "",
"path": "/ibantowallet"
}
在控制台日志中我得到:
2020-06-06 10:56:11.371 WARN 7552 --- [nio-8080-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity com.dgs.demotrans.api.TransactionController.sendMoneyIbanToWallet(com.dgs.demotrans.request.IbanToWalletRequest): [Field error in object 'ibanToWalletRequest' on field 'fromIban': rejected value [FR9151000 0000 0123 4567 89]; codes [Pattern.ibanToWalletRequest.fromIban,Pattern.fromIban,Pattern.java.lang.String,Pattern]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [ibanToWalletRequest.fromIban,fromIban]; arguments []; default message [fromIban],[Ljavax.validation.constraints.Pattern$Flag;@3c555785,[a-zA-Z]{2}\d{2}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{2}|DE\d{20}]; default message [IBAN validation failed]] ]
所以消息是空的,我希望客户端收到特定消息“IBAN验证失败”或“请提供金额”等,我该怎么做?提前谢谢!
【问题讨论】:
-
编写全局异常处理程序并处理违反约束的异常
标签: java spring-boot hibernate rest bean-validation