当我进入表的编辑模式时,我希望在用户超出任何验证约束的范围时立即显示数据验证感叹号图标 (!)。
首先,有几点注意事项:
- 我正在使用 Vaadin 7,所以 Bean Validation 插件很遗憾无法工作。
- 数据验证按预期工作。
现在,我有一个完美的工作表,我正在使用 BeanItemContainer 将我的 Person bean 保存在里面。
表和 TableFieldFactory 的代码如下所示:
table.setContainerDataSource(buildContainer());
table.setTableFieldFactory(new TableFieldFactory() {
@Override
public Field createField(Container container, Object itemId, Object propertyId, Component uiContext) {
TextField field = (TextField) DefaultFieldFactory.get().createField(container, itemId, propertyId,
uiContext);
field.setImmediate(true);
if (propertyId.equals("firstName")) {
field.addValidator(new BeanValidator(Person.class, "firstName"));
}
return field;
}
});
Person bean 如下所示:
public class Person {
@Size(min = 5, max = 50)
private String firstName;
... setters + getters...
}
问题是,当我在 firstName 字段中输入内容然后按回车键或模糊/取消聚焦该字段时,不会显示任何错误指示。我必须将鼠标悬停在该字段上才能看到有问题。
我的问题是两个折叠...
- 字段无效时如何显示感叹号图标?(这适用于不在表格中的普通 TextField)
- 有没有办法从无效字段(显示图标)获得即时响应(即在您键入 5 个字符后立即响应,而无需按回车键或模糊/取消焦点相关字段)。
如果我能回答这两个问题就太好了!=)
提前致谢!