java - Vaadin 中的跨域验证策略

标签 java validation vaadin bean-validation vaadin7

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/

相关文章:

ruby-on-rails - Rails 中的多状态验证

css - 我可以在 Vaadin7 中设置 MenuItem Caption 的样式吗

Java JDBC 登录表单

java - xpath 在 selenium 中无法识别,但在 XPather 中可以识别

java - JavaEE 应用程序的文档根目录是什么?

ruby-on-rails - 自定义 Rails 验证抛出未定义的方法错误

javascript - ColdFusion 表单正则表达式验证出现意外 token 错误

css - Vaadin 网格布局边框

java - com.vaadin.server.ServiceException : java. lang.NullPointerException

java - 我如何设计一个以1开头并以0结尾的int循环(1,2,3,4,5,6,7,8,9,0)