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 (), а объект привязки равен нулю (еще не записан).

Другие вопросы по тегам