RequestFactory进程双jsr303验证

时间:2013-02-03 18:24:22

标签: hibernate gwt bean-validation requestfactory

我正在使用带有RequestFactory的gwt,我想使用JSR303验证,但问题是当我使用requestFactory调用一个方法,如add(object o)时,它调用每个字段的验证2次,例如,当我对带有使用自定义notnull注释注释的字段的对象的调用save方法:

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

}

我收到同一领域的consol:

当我尝试添加新实体时: [INFO]价值测试 [INFO]价值测试

当我尝试修改现有实体时: [INFO]价值测试 [INFO]值null

我的问题是为什么验证被调用了2次,为什么当我尝试修改时,值第二次为空?

1 个答案:

答案 0 :(得分:0)

第一次是在客户端还是第二次在服务器端?

如果是,由于安全原因,这是正确的。

客户端验证是为了保护客户端不会输入错误,服务器端验证是为了保护您的系统免受恶意攻击。