1

カスタム例外マッピングを使用して、スプリング ブート レスト アプリケーションを実行しています。例外マッピングは関係ありませんが、バージョン 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 を忘れることができる場合?

4

1 に答える 1