0

私は RequestFactory で gwt を使用しており、JSR303 検証を使用したいのですが、問題は、add(object o) のような requestFactory を使用してメソッドを呼び出すと、各フィールドの検証が 2 回呼び出されることです。たとえば、save メソッドを呼び出すと、カスタマイズされた notnull アノテーションでアノテーションが付けられたフィールドを持つオブジェクトの場合:

currentContext.add(toPersist).fire(new Receiver<Void>() {
        @Override
        public void onSuccess(Void response) {
        }
    });

私のカスタマイズされた notnull 注釈は、検証される値を示しています

public class NotEmptyValidator implements
    ConstraintValidator<NotEmpty, Object>{

@Override
public void initialize(NotEmpty constraintAnnotation) {

}

@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
    System.out.println("the value "+value);
    return  (value==null || value.toString().trim().equals("")) ? false:true;
}

}

私は同じフィールドのコンソールで受け取ります:

新しいエンティティを追加しようとしたとき: [情報] 値のテスト [情報] 値のテスト

既存のエンティティを変更しようとしたとき: [情報] 値テスト [情報] 値 null

私の質問は、検証が 2 回呼び出される理由と、変更を試みたときに 2 回目の値が null になる理由です。

4

1 に答える 1

0

1回目はクライアント側、2回目はサーバー側ということは可能でしょうか?

はいの場合、セキュリティ上の理由から、これは正しいでしょう。

クライアント側の検証は、クライアントが間違った入力を行うのを防ぐことであり、サーバー側の検証は、悪意のある攻撃からシステムを保護することです。

于 2013-02-04T12:45:58.070 に答える