我正在尝试使用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;
...
}
我不想避免在组合框中选择空值。
如何避免提交空值?
答案 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}}
感谢您的回答!