我正在使用带有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次,为什么当我尝试修改时,值第二次为空?
答案 0 :(得分:0)
第一次是在客户端还是第二次在服务器端?
如果是,由于安全原因,这是正确的。
客户端验证是为了保护客户端不会输入错误,服务器端验证是为了保护您的系统免受恶意攻击。