commit()
メソッドが Vaadin で実際に何をするかを理解するのに問題があります。ドキュメントを読み、いくつかの例を作成しましたが、それが実際に何であるかを誤解しています。
これはコードのスニペットです:
if (source == save) {
/* If the given input is not valid there is no point in continuing */
if (!isValid()) {
return;
}
if (newContactMode) {
/* We need to add the new person to the container */
Item addedItem = app.getDataSource().addItem(newPerson);
/*
* We must update the form to use the Item from our datasource
* as we are now in edit mode
*/
setItemDataSource(addedItem);
//System.out.println(app.getDataSource().getItem(addedItem));
newContactMode = false;
}
commit();
setReadOnly(true);
}
このようにすると、DataSource のフォーム (コンテナー内) に追加されたデータの一部は追加されません。これらのエントリは表に表示されていません。
コードの別のスニペット:
if (source == save) {
/* If the given input is not valid there is no point in continuing */
if (!isValid()) {
return;
}
commit();//changing place of this method
if (newContactMode) {
/* We need to add the new person to the container */
Item addedItem = app.getDataSource().addItem(newPerson);
/*
* We must update the form to use the Item from our datasource
* as we are now in edit mode
*/
setItemDataSource(addedItem);
//System.out.println(app.getDataSource().getItem(addedItem));
newContactMode = false;
}
setReadOnly(true);
}
このバージョンは正常に動作します。フォーム内のこのメソッドは、このフォームの "DataSource" (DataSource 内の項目) とのすべての対話をブロックすると結論付けることができます。しかし、別のクラスとコンテナのaddItem()
. commit()
メソッドについての適切な説明は見つかりませんでした。
私はこのチュートリアルを使用しています。チュートリアルからこの GUI を認識する人がいるかもしれません。