我想驗證我的Spring @RestController
中端點的@RequestBody
。因此,我創建這樣的方法:Bean驗證 - 如何自定義ConstraintViolationException?
@RequestMapping(value = ...)
public ResponseEntity<...> myPostMethod(@RequestBody MyBean myBean) throws Exception {
MyBean
裝飾有一個自定義@Constraint
及其相應的驗證邏輯上我創建了一個ConstraintValidator
類實現。該驗證器具有如下方法:
@Override
public boolean isValid(MyBean value, ConstraintValidatorContext context) {
這就是所有驗證邏輯發生的地方。當它失敗時,isValid
返回false
,我可以使用該參數以我想要的方式生成驗證錯誤消息。另外,myPostMethod
也會自動失敗(因爲我不會自己拋出它)MethodArgumentNotValidException
,我將在全局處理程序上捕獲以呈現通用ResponseEntity
。這一切都按預期工作。 現在的問題是:我如何定製不僅驗證錯誤消息,而且整個ConstraintViolationException
?我想在異常中提供更多的數據(來自我的業務領域),以便在響應正文json中呈現。
任何提示將不勝感激。