Vaadin Form commit() метод?
У меня есть некоторые проблемы с пониманием того, что 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);
}
Если я поступаю таким образом, то я не добавляю некоторые данные, которые я написал в форме, в источник данных (в контейнере). Эти записи не отображаются в таблице.
Еще один фрагмент кода:
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);
}
Эта версия работает правильно. Я могу заключить, что этот метод в форме блокирует все взаимодействия с "источником данных" (с элементами в источнике данных) для этой формы. Но мне нужно сделать это вручную, путем вызова другого класса и контейнера addItem()
непосредственно. Я не нашел хорошего объяснения commit()
метод.
Я использовал этот учебник, может быть, кто-то узнает этот графический интерфейс из учебника.
1 ответ
Я понял, что не так. Во втором фрагменте я заполнил свой экземпляр newPerson данными из формы с помощью вызова commit(). В первом фрагменте я написал нулевые данные, потому что раньше я не вызывал метод commit (), а объект привязки равен нулю (еще не записан).