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

[vaadin]add a validator in a field which depends another field in a form with "form.setBuffered(true);"

我有一个 question.that 如果我使用 "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

那么,有什么办法可以解决吗?

抱歉我的英语不好。

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

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