2017-03-04 2 views
1

BeanValidation 1.1仕様では、指定されたメソッドのパラメータに配置されたすべての制約を検証するためにAPI ExecutableValidator.validateParametersを定義しています。JSR 349検証:静的メソッドのExecutableValidator.validateParameters

APIを検証するためのメソッドが呼び出されるオブジェクトのインスタンスを渡すためにそれを必要とするしかし:

/** 
* Validates all constraints placed on the parameters of the given method. 
* 
* @param <T> the type hosting the method to validate 
* @param object the object on which the method to validate is invoked 
* @param method the method for which the parameter constraints is validated 
* @param parameterValues the values provided by the caller for the given method's 
*  parameters 
* @param groups the group or list of groups targeted for validation (defaults to 
*  {@link Default}) 
* @return a set with the constraint violations caused by this validation; 
*   will be empty if no error occurs, but never {@code null} 
* @throws IllegalArgumentException if {@code null} is passed for any of the parameters 
*   or if parameters don't match with each other 
* @throws ValidationException if a non recoverable error happens during the 
*   validation process 
*/ 
<T> Set<ConstraintViolation<T>> validateParameters(T object, 
                Method method, 
                Object[] parameterValues, 
                Class<?>... groups); 

私の質問は、私は、静的メソッドの呼び出しを検証することができる方法ですか?例えば、以下に定義Foo.barメソッドの呼び出し:

public class Foo { 
    public static void bar(@NotNull String str) {...} 
} 
+1

はじめに静的メソッドを検証する理由を教えてください。 staticの定義により、Beanの検証はもう行われません。 – Tunaki

+0

私はBean 'Foo'を検証していません。しかし、私は上記のサンプルコードでパラメータ 'str'を検証する必要があります –

答えて

1

ビーン検証1.1は、静的メソッドをサポートしていません。

オブジェクト制約をホスティングし、ビーン検証プロバイダによって検証されることを期待は、次の要件満たしている必要があります: Requirements on classes to be validatedから
  • 静的フィールドと静的メソッドは、検証対象から除外されている[...]

    • を。
  • いくつかの実装は、エンハンスメント(Hibernateのバリデータの例えばHV-606)として、将来的にそれをサポートかもしれないが、仕様自体はありません。まだ明示的には2.0 draft of the specificationではサポートされていません。

    関連する問題