Field validation在 Vaadin 中工作起来很容易,但是你不能用它来检查字段之间的关系(例如,加入日期必须在离开日期之前),这真的很烦人。所以我使用 JSR 303 添加了标准类级别验证哪个可以做到这一点。这很好用。
但是我只能在提交字段后才能执行此跨字段验证。这意味着 bean 已经包含所有字段更改,如果出现验证问题,我需要有可能在字段提交之前“返回”到有效状态(或者以某种方式强制“重新加载”bean),否则我坚持这些变化,例如如果用户决定取消编辑操作。
当然,我之前可以保存所有字段内容,并手动重置状态,但鉴于 Vaadin 在简单字段验证的情况下完全相同,我想重用该机制。但是查看 Vaadin 代码,我不太确定我能弄清楚该做什么,并正确地做。
请给我一些提示,告诉我如何在不重新发明轮子的情况下处理这个问题。
最佳答案
您可以将提交处理程序添加到您的 FieldGroup
。这允许您检查 promise 之前/之后:
binder.addCommitHandler(new CommitHandler() {
@Override
public void preCommit(CommitEvent commitEvent) throws CommitException {
// TODO throw new CommitException() if your validation fails
}
@Override
public void postCommit(CommitEvent commitEvent) throws CommitException {
// TODO throw new CommitException() if your validation fails
}
});
所以应该可以“跨域”验证。
关于java - Vaadin 中的跨域验证策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286881/