2012-03-02 9 views
1

で検証を理解し、私はドキュメントで検証がplayframework1.2.4でどのように機能するかを理解しようとplayframework

.. SO..Stillでsome posts私NAG物事のカップルからもdocsと を経て、 URICheckクラスは?uri.schemes()から来たん以下の方法

@Override 
public void configure(URI uri) { 
    setMessage(uri.message()); 
    this.schemes = Arrays.asList(uri.schemes()); 
} 

を持つURIクラスは@interface URIから離れていますか?

また、後でisSatisfied()方法では、

public boolean isSatisfied(Object validatedObject, Object value,OValContext context, Validator validator){ 
... 
} 

validatedObjectは、URIのインスタンスは、それが、されていないのですか? valueパラメータは渡された実際の値であり、検証する必要があります。

誰かがこれらを明確にすることができれば助けになるはずです。javadocsにはパラメータを説明するためにもう少しお待ちいただきたいです。 @interface URIにはこのようなメソッドはありません。

答えて

2

PLayのソースコードにURLクラスは表示されませんが、URLは同じですが、動作は同じになります。

フィールドに検証関連注釈を注釈する場合、その注釈にいくつかのパラメータを与えることができます。例えば、簡素化します

@Max(value=10, message="My error message") 
    public int myValue; 

を次のように注釈が定義されていること:あなたが見ることができるように

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.FIELD, ElementType.PARAMETER}) 
@Constraint(checkWith = MaxCheck.class) 
public @interface Max { 

    String message() default MaxCheck.mes; 
    double value(); 
} 

は、それは名前私が設定したパラメータと同じである2つの方法があります。これらのメソッドを呼び出すと、その注釈のインスタンスに関連するパラメータが取得されます。

その後、プレイは、エンティティのフィールドに関連する注釈をチェックするためにリフレクションを経由して、いくつかの「魔法」をしのconfigure方法でそのインスタンスを使用して、isSatisfiedメソッドを実行します。

Maxため設定さ方法は次のとおりです。

@Override 
    public void configure(Max max) { 
     this.max = max.value(); 
     setMessage(max.message()); 
    } 

あなたが見ることができるように、それはあなたがあなたのエンティティで初期化されたアノテーションからのメソッドを使用しています。

私はこのことができます:)返信用

+0

感謝を願って、そのドキュメントにURIという名前の唯一のエンティティは、その@interfaceが[そのページ]ことname.Mayである[1] something.Your説明がなさ不足しています物事ははっきりと分かります。 [1]:http://www.playframework.org/documentation/1.2.4/validation/#customannotations –

関連する問題