私はVaadinでコンボボックスの値を検証しようとしています。私の目標は、選択されたオブジェクトの 'myIntegerAttribute'フィールドをnullに設定してフォームをコミットしないようにすることです。コンボボックスには「MyBean」クラスオブジェクトが格納されていることを確認します。Vaadinのコンボボックスの検証
"FilterableListContainer"を使用してデータをバインドしています。 私はこれを試してみましたが、バリデータが解雇されていないようです:
List<MyBean> myBeans = getMyBeansList();
FilterableListContainer filteredMyBeansContainer = new FilterableListContainer<MyBean>(myBeans);
comboBox.setContainerDataSource(filteredMyBeansContainer);
comboBox.setItemCaptionPropertyId("caption");
...
comboBox.addValidator(getMyBeanValidator("myIntegerAttribute"));
...
private BeanValidator getMyBeanValidator(String id){
BeanValidator validator = new BeanValidator(MyBean.class, id);//TrafoEntity
return validator;
}
class MyBean {
String caption;
Integer myIntegerAttribute;
...
}
私はコンボボックスにnull値を選択しないようにしたくありません。
null値をコミットしないようにするにはどうすればよいですか? BeanValidator君を利用して、ユーザの選択に対応するオブジェクトのメンバーがnullのとき
NullValidator nv = new NullValidator("Cannot be null", false);
comboBox.addValidator(nv);
が検証に失敗する:
フォームにバインダーを使用しているのか、コンポーネントをレイアウトに手動で追加していますか? 「コミットする」部分を含む完全なコードを表示すると、シナリオの理解に役立ちます。 – Morfic
はい、メインの投稿に詳細を追加しました。 – Ortzi