我有一个TextField
并按field.addValidator(validator)
添加验证。
我想使用该字段来编辑实体,以及创建一个新实体。
问题:在创建新的时,我希望在编辑时应用更多的验证器。例如:创建帐户需要在文本字段中添加UniqueAccountValidator
。
但是,当我编辑帐户(使用相同的表单)时,我只想跳过UniqueAccountValidator
,因为对象不是新创建的,而是合并的。
是否有可能以某种方式告诉vaadin BeanFieldGroup
或AbstractField
在特定情况下跳过某些验证器?
答案 0 :(得分:3)
您可以通过实现Validator接口来创建自己的自定义验证器。在那里,您可以检查您需要的内容,例如实体是否是新实体。
像
这样的东西public class MyValidator implements Validator {
@Override
public boolean isValid(Object value) {
//check if your object is new or existent
if(((BeanObject)value).getID()==null)){
//non-existent entity, also check the unique account constraint
if(accountExists()) {
return false;
}
else {
return true;
}
}
//common checks....
{....}
}
....
}