2013-02-03 15 views
0

我使用gwt與RequestFactory,我想使用JSR303驗證,但問題是當我調用一個方法使用requestFactory像添加(對象o)它調用每個字段驗證2次,對於爲例,當我調用保存方法的對象與定製NOTNULL註解字段:RequestFactory process double jsr303 validation

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; 
} 

}

值3210

我收到關於CONSOL對於相同的字段:

當我嘗試添加新實體: [INFO]的值測試 [INFO]的值測試

當我嘗試修改現有的實體: [INFO]值測試 [INFO] null值

我的問題是,爲什麼驗證被稱爲2倍,爲什麼值爲null第二次當我嘗試修改?

+0

如何爲您的註釋類看起來像?你是否也使用JPA? – Hardy

+0

是的,我使用JPA和spring數據,我的junit測試沒有問題(服務器端) –

回答

0

有可能第一次在客戶端,第二次在服務器端?

如果是,由於安全原因,這是正確的。

客戶端驗證是爲了防止客戶端做出錯誤的輸入,服務器端驗證是爲了保護您的系統免受惡意攻擊。

+0

對不起,我編輯我的帖子問題是當我嘗試修改值爲空,所以值不修改 –

+0

可以你發佈,如何在客戶端編輯你的實體? – Sam

+0

在使用gwt編輯器的客戶端上,所以uiField綁定到valueProxy –