如何在vaadin中将验证器绑定到TextFields?

时间:2014-05-30 14:42:29

标签: java vaadin vaadin7

我尝试将自定义验证程序绑定到vaadin中的TextField BeanFieldGroup

虽然我的验证器只返回true,但验证每次都失败。我在这里做错了什么?

class Order {
    private BigDecimal price;
}

class MyView {


public void init() {
    TextField priceField = new TextField("Enter Price");
    BeanFieldGroup<Order> binder = new BeanFieldGroup<Order>(Order.class);
    binder.bind(priceField, "price");

    priceField.addValidator(new AbstractValidator<String>("Price invalid") {
            @Override
            protected boolean isValidValue(String value) {
                return true;
            }

            @Override
            public Class<String> getType() {
                return String.class;
            }
    });

    Button saveButton = new SaveButton("Save", new ClickListener() {
        try {
            editor.commit();
        } catch (CommitException e) {
            e.printStackTrace();
            showValidationErrors(true);
        }
    });
}
}

结果:每当我提交活页夹时,我都会收到错误com.vaadin.data.fieldgroup.FieldGroup$CommitException: Commit failed Price invalid

所以,虽然我总是通过验证器返回true,但它不起作用。我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

回答我自己的问题:验证器必须与绑定属性的类型相同。更改为AbstractValidator<BigDecimal>可解决错误。