[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 的当前值(它保存了初始值,这是好的,因此没有验证错误)。如果您使用错误的数据提交一次,您将看到,您再也无法提交,因为现在触发了验证。
解决此问题的一种方法是记住这种情况的字段并比较 name
和 id
字段的当前值。在提交之前,它们是用户输入的唯一来源。
我有一个 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 的当前值(它保存了初始值,这是好的,因此没有验证错误)。如果您使用错误的数据提交一次,您将看到,您再也无法提交,因为现在触发了验证。
解决此问题的一种方法是记住这种情况的字段并比较 name
和 id
字段的当前值。在提交之前,它们是用户输入的唯一来源。