Vaadin 如何对可编辑表中的字段进行业务验证?

Vaadin 如何对可编辑表中的字段进行业务验证?,vaadin,vaadin7,Vaadin,Vaadin7,交易是这样的:我有一个使用“MyBean”BeanItemContainer的表。“MyBean”实际上并不相关,它只包含1个字符串和2个日期对象。 但是必须允许用户更改容器中每个MyBean实例的这些值 要做到这一点很简单,只需执行myTable.setEditable(true)。或者更复杂一点,创建一个Table.ColumnGenerator,返回一个字段(添加一个ValueChangeListener将新值推送到bean中)。 使用Table.ColumnGenerator,我还可以为

交易是这样的:我有一个使用“MyBean”BeanItemContainer的表。“MyBean”实际上并不相关,它只包含1个字符串和2个日期对象。 但是必须允许用户更改容器中每个MyBean实例的这些值

要做到这一点很简单,只需执行myTable.setEditable(true)。或者更复杂一点,创建一个Table.ColumnGenerator,返回一个字段(添加一个ValueChangeListener将新值推送到bean中)。 使用Table.ColumnGenerator,我还可以为每个字段添加特定的验证,这太棒了! 其目的是在“错误模式”下渲染字段

但是有一件事我不能做:在用户单击“保存”按钮后进行业务验证,并检索相应字段以调用方法setComponentError(…)

只能进行基本验证(仅限整数、最大值、日期-时间范围等),但对于更复杂的验证(业务需求),我不知道


我该怎么做呢?

您可以通过实现接口编写自己的自定义验证器,并在其中实现自定义业务逻辑

public class MyValidator implements Validator {

    void validate(Object valueToValidate) throws Validator.InvalidValueException {
        //Your Business logic
    }

}

我知道,但它总是有限的。我的表包含从X时间到Y时间使用的资源(我的表的1行)。我必须确认没有同时使用任何资源。一次只有一个。但我找到了另一种方法:我的表包含字段和元素。:-)