カスタム例外マッピングを使用して、スプリング ブート レスト アプリケーションを実行しています。例外マッピングは関係ありませんが、バージョン 4 で休止状態バリデーターを使用したかった ((Java 検証 API バージョン 1.0 を使用する必要があるため)。
今、 @configuration クラスでバリデーターを初期化しています:
@Bean
public Validator validator() {
return new LocalValidatorFactoryBean();
}
@Bean
MethodValidationPostProcessor methodValidationPostProcessor(Validator validator) {
MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
processor.setValidator(validator);
return processor;
}
そして、リソースを作成します。
@Path("/validation")
@Produces("application/json")
@Validated
public interface ValidationTestResource {
@POST
@Path("/test")
@Validated
public void translatedAndMappedException(@RequestBody @Valid
ValidationTestDto testDto);
}
}
リソースが機能します。そして、検証は機能します。しかし、ValidationTestDto の制約に違反するたびに、例外が発生します。ただし、これはorg.hibernate.validator.method.MethodConstraintViolationExceptionであり、検証に失敗したメソッドとパラメーター (translatedAndMappedException、引数 testDto) のみを指定していました。これにより、違反したフィールド リストが存在しないため、違反したフィールド リストを返すのは役に立たなくなります。
しかし、hibernate-validator バージョン 5 以降を使用すると、適切なjavax.validation.ConstraintViolationExceptionが発生し、検証されなかったフィールドの完全なリストを抽出できます。
質問は:
1.単純に何か間違ったことをしている場合、Hibernate バリデーター 4 はそのようなものです。
2.春から何かを使用して検証し、それを適切に実行する hibernate-validator を忘れることができる場合?