テーブルの編集モードに入ったときに、ユーザーが検証制約の範囲外になるとすぐに、データ検証の感嘆符アイコン (!) が表示されるようにします。
まず、いくつかの注意事項:
- 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 フィールドに何かを入力して Enter キーを押すか、そのフィールドをぼかす/フォーカスを外しても、エラーの兆候がまったく表示されないことです。何かが間違っていることを確認するには、フィールドにマウスオーバーする必要があります。
私の質問は2つ折りです...
- フィールドが無効な場合に感嘆符アイコンを表示するにはどうすればよいですか? (これは、テーブルにない通常の TextField で機能します)
- 無効なフィールド (アイコンを表示) からすぐに応答を取得する方法はありますか (つまり、Enter キーを押したり、問題のフィールドをぼかしたりフォーカスを外したりすることなく、5 文字未満を入力した直後に)。
両方の質問に答えていただければ幸いです。=)
前もって感謝します!