私は 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 になる理由です。