我尝试将自定义验证程序绑定到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,但它不起作用。我错过了什么吗?
答案 0 :(得分:3)
回答我自己的问题:验证器必须与绑定属性的类型相同。更改为AbstractValidator<BigDecimal>
可解决错误。