Vaadin组合框验证

时间:2017-04-06 15:20:50

标签: validation combobox vaadin vaadin7

我正在尝试使用Vaadin验证组合框的值。我的目标是避免使用设置为null的所选对象的'myIntegerAttribute'字段提交表单。假设组合框存储'MyBean'类对象。

我正在使用“FilterableListContainer”来绑定数据。 我尝试过这个,但似乎验证器没有被解雇:

List<MyBean> myBeans = getMyBeansList();
FilterableListContainer filteredMyBeansContainer = new FilterableListContainer<MyBean>(myBeans);
comboBox.setContainerDataSource(filteredMyBeansContainer);
comboBox.setItemCaptionPropertyId("caption");
...
comboBox.addValidator(getMyBeanValidator("myIntegerAttribute"));
...
private BeanValidator getMyBeanValidator(String id){
    BeanValidator validator = new BeanValidator(MyBean.class, id);//TrafoEntity
    return validator;
}

class MyBean {
    String caption;
    Integer myIntegerAttribute;
    ...
}

我不想避免在组合框中选择空值。

如何避免提交空值?

2 个答案:

答案 0 :(得分:1)

在Vaadin 7中,当用户的选择为空时,您将使用NullValidator来验证失败:

    NullValidator nv = new NullValidator("Cannot be null", false);
    comboBox.addValidator(nv);

如果对应于用户选择的对象成员为null,则使用BeanValidator时,您将在bean类中包含@NotNull JSR-303注释:

public class MyBean {

    String caption;

    @NotNull
    int myIntegerAttribute;

    // etc...
}

您使用的是Viritin的FilterableListContainer吗?我不确定为什么会妨碍验证器的使用,但是你能解释一下为什么你在组合框中使用验证器吗?

答案 1 :(得分:0)

我是以错误的方式实现验证器。我创建了一个实现Vaadin&#39; Validator&#39;类:

combobox.addValidator(new MyBeanValidator());

在组合框中使用它:

{{1}}

感谢您的回答!