如何在vaadin中定义TextFields的验证约束?

时间:2014-05-20 09:33:12

标签: java validation vaadin vaadin7

我有一个TextField并按field.addValidator(validator)添加验证。 我想使用该字段来编辑实体,以及创建一个新实体。

问题:在创建新的时,我希望在编辑时应用更多的验证器。例如:创建帐户需要在文本字段中添加UniqueAccountValidator

但是,当我编辑帐户(使用相同的表单)时,我只想跳过UniqueAccountValidator,因为对象不是新创建的,而是合并的。

是否有可能以某种方式告诉vaadin BeanFieldGroupAbstractField在特定情况下跳过某些验证器?

1 个答案:

答案 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....
         {....} 

    }
....
}