私の春@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
を返し、私はそのcontext
paramを使用して、検証エラーメッセージを作成します。さらに、myPostMethod
も自動的に失敗します(私は自分で投げないので)MethodArgumentNotValidException
汎用ハンドラでキャプチャして汎用ResponseEntity
をレンダリングするつもりです。それはすべて期待どおりに動作します。 質問:検証エラーメッセージだけでなく、ConstraintViolationException
全体をカスタマイズするにはどうすればよいですか?私はレスポンスボディjsonでレンダリングする例外の中に(私のビジネスドメインから)より多くのデータを提供したいと思います。
いずれのチップも高く評価されます。