验证错误发生时如何向用户显示验证程序错误消息?

时间:2015-12-20 09:19:26

标签: vaadin vaadin7

我有以下情况:

  1. 我有DoubleRangeValidator的字段,并指定了错误消息 field.addValidator(new DoubleRangeValidator(“Salary必须是数字值。”,0d,1000000d));

  2. 在SAVE按钮下,我调用BeanFieldGroup.commit(),在这样的字段中引发非数值的异常

  3. 要显示错误,我正在使用此处提到的ErrorUtils类 Display error messages directly in Vaadin 7

  4. ..它只是为所有字段/组件调用component.getErrorMessage()并收集所有错误消息。但是DoubleRange验证器的字段为getErrorMessage()返回null,因此这里没有可用的错误消息。这同样适用于其他验证者。所以我的问题是如何在commit()期间发生验证错误时显示验证器错误消息?

1 个答案:

答案 0 :(得分:0)

我尝试使用您提到的 public void onBackPressed(int[] rideCount, File file) { try { PrintWriter output = new PrintWriter(file); output.println(rideCount); output.close(); } catch (IOException ex) { } } 课程重现您的错误,但ErrorUtils方法未返回getErrorMessage。也许您创建null和/或BeanFieldGroup的方式有问题。这是我的代码:

Field
@Override
protected void init(VaadinRequest request) {

    BeanFieldGroup<MyBean> bfg = new BeanFieldGroup<>(MyBean.class);
    bfg.setItemDataSource(new MyBean());

    Field<?> salaryField = bfg.buildAndBind("salary");
    salaryField.addValidator(new DoubleRangeValidator("Salary must be a numeric value.", 0d, 1000000d));

    Button commit = new Button("Save", e -> {
        try {
            bfg.commit();
        }
        catch (CommitException ce) {
            ErrorUtils.showComponentErrors(bfg.getFields());
        }
    });

    VerticalLayout hLayout = new VerticalLayout(salaryField, commit);
    setContent(hLayout);
}