我在理解该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 的 Form 中的数据(在 Container 中)。这些条目未显示在表格中。
另一段代码:
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);
}
这个版本可以正常工作。我可以得出结论,表单中的此方法会阻止与此表单的“数据源”(与数据源中的项目)的所有交互。但我需要直接通过调用另一个类和 Container 的addItem()
. 我还没有找到关于commit()
方法的任何好的解释。
我一直在使用这个教程,也许有人会从教程中认出这个 GUI。