我有以下情况:
我有DoubleRangeValidator的字段,并指定了错误消息 field.addValidator(new DoubleRangeValidator(“Salary必须是数字值。”,0d,1000000d));
在SAVE按钮下,我调用BeanFieldGroup.commit(),在这样的字段中引发非数值的异常
要显示错误,我正在使用此处提到的ErrorUtils类 Display error messages directly in Vaadin 7
..它只是为所有字段/组件调用component.getErrorMessage()并收集所有错误消息。但是DoubleRange验证器的字段为getErrorMessage()返回null,因此这里没有可用的错误消息。这同样适用于其他验证者。所以我的问题是如何在commit()期间发生验证错误时显示验证器错误消息?
答案 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);
}