当我进入表的编辑模式时,我想对该表中的所有字段进行数据验证。
首先,有几点注意事项:
- 我正在使用 Vaadin 7,所以 Bean Validation 插件很遗憾无法工作。
- 我知道 JSR-303 的实现是有效的,因为我尝试将 BeanValidator 添加到 TextField 没有问题。
现在,我有一个完美的工作表,我正在使用 BeanItemContainer 将我的 Person bean 保存在里面。
Person bean 如下所示:
public class Person {
@Size(min = 5, max = 50)
private String firstName;
@Size(min = 5, max = 50)
private String lastName;
@Min(0)
@Max(2000)
private int description;
... getters + setters...
}
将 Person bean 添加到 BeanItemContainer 中,然后使用 setContainerDataSource() 将其设置为容器数据源
BeanValidator 被添加到表中,如下所示:
table.addValidator(new BeanValidator(Person.class, "firstName"));
当我运行应用程序时,我有两个问题:
当我运行应用程序时,表格会按预期显示。但是,当我编辑字段并将 firstName 字段之一设置为“abc”时 - 没有显示验证错误并且该值被接受 我应该如何让 BeanValidator 在我的所有表字段上工作?
当我使用 table.setSelectable(true) 或 table.setMultiSelect(true) 时,我收到此错误:
com.vaadin.server.ServiceException: java.lang.IllegalArgumentException: [] is not a valid value for property firstName of type class com.some.path.vaadinpoc.sampleapp.web.Person 我应该如何让 BeanValidator 使用可选择/多选?
请指教
谢谢!