[vaadin]在一个字段中添加一个验证器,该字段依赖于表格中的另一个字段,其中包含" form.setBuffered(true);"

时间:2015-02-06 01:50:45

标签: validation vaadin custom-validators

我有一个问题。如果我使用" form.setBuffered(true);",我无法像这样验证:

field.addValidator(new Validator() {
    @Override
    public void validate(Object o) throws InvalidValueException {
        //FIXME There is the problem.if i set "form.setBuffered(true);",I can't get latest testBean.
        if (testBean.getId().equals(testBean.getName())) {
            throw new Validator.InvalidValueException("id can't equals name.");
        }
    }
});

有代码: github

所以,一种方法可以解决它吗?

抱歉,我的英语很差。

1 个答案:

答案 0 :(得分:0)

buffered的想法是保持bean完好无损,只用commit编写。所以你的测试会读取bean的当前值(它保存初始值,这是正常的,因此没有验证错误)。如果您使用错误的数据提交一次,您将看到,您再也无法提交,因为现在验证会触发。

解决此问题的一种方法是记住此案例的字段,并比较nameid字段的当前值。在提交之前,它们是用户输入的唯一来源。