FormField commit Непрвильное отображение после commit

Доброго времени суток, уважаемые форумчане. Очень рад, что есть русскоязычный форум. Сначала не заметил.
Встретился с вот такой проблемой. Есть FieldGroup и FormLayout. “Лежат” они поверх Window. Есть 2 DateField’а, которые должны давать возможность выбрать начало и конец какого-нибудь события(мероприятия) в календаре. (Vaadin Calendar addon используется). DateField’ы созданы и добавлены в FormLayout, потом они забайндены(binded) к FieldGroup. Проблема в том, что после нажатия на кнопку “Применить”, вызывается метод Fieldgroup.commit(), и получаются разные данные.

fieldGroup.setBuffered(true); fieldGroup.setItemDataSource(item); были вызваны.

    BeanItem<CalendarEvent> someItem = (BeanItem<CalendarEvent>) fieldGroup.getItemDataSource();
    CalendarEvent someEvent = someItem.getBean();
    System.out.println("inside commitCalendarEvent() before commit--->");
    System.out.println("event.getStart --->" + someEvent.getStart());
    System.out.println("event.getEnd   --->" + someEvent.getEnd());
	
    fieldGroup.commit();
    
    BeanItem<CalendarEvent> someItem2 = (BeanItem<CalendarEvent>) fieldGroup.getItemDataSource();
    CalendarEvent someEvent2 = someItem2.getBean();
    System.out.println("inside commitCalendarEvent() after commit--->");
    System.out.println("event.getStart --->" + someEvent2.getStart());
    System.out.println("event.getEnd   --->" + someEvent2.getEnd());

Заранее благодарю.

Что значит “получаются разные данные” ? Оличные от того что Вы хотите получить ? Или разные до вызова commit и после ? Сформулируйте пожалуйста вопрос точнее. Из текущего описания я проблемы не понял.

Здравствуйте…

Отличные от того, что хотелось бы получить. Давайте я приведу пример вывода:

inside commitCalendarEvent() before commit—>


event.getStart —>Wed Jun 26 14:00:00 ALMT 2013


event.getEnd —>Wed Jun 26 17:00:00 ALMT 2013

inside commitCalendarEvent() after commit—>

event.getStart —>Wed Jun 26 17:00:00 ALMT 2013

event.getEnd —>Wed Jun 26 17:00:00 ALMT 2013

Ведь и после commit() данные должны были сохраниться, как я полагаю.

Всё равно непонятны все вызовы.
FieldGroup используется для того чтобы данные не отправлялись на сервер до того как вызван commit(), кот. позволяет выполнить отправку данных атомарно, пропустив данные формы ещё и через валидаторы.
Поля формы ещё и привязываются к бину, что позволяет автоматически обновлять бин при вызове commit().
FormLayout в данном вопросе никакой роли не играет.

Если Вы выставили каким нибудь полям свойство immediate, то данные этого поля всё равно уйдут на
сервер после изменений в поле, даже если они и в FieldGroup.

commit() обычно вызывается в обработчике кнопки (submit) для формы. Пользователь выставляет значения в
поля формы (через UI), еcли immediate не выставлен, то значения на сервер в этот момент не уходят.
Потом, после нажатия кнопки вызывается commit() (это уже забота вашей реализации) и свойства бина
обновляются все скопом.

Для того чтобы поля трактовались как поля одной формы нужен какой нибудь из вызовов bind, например
bind(Field<?> field, java.lang.Object propertyId)

Не работать может по причине непрохождения валидаторов, отсутствия привязки к форме (нет нужного bind),…

Из вашего примера не видно в какой момент Вы вызываете commit() и не вижу bind(). Так что непонятна последовательность вызовов.

Спасибо за объяснение.

Проблема решилась тем, что надо было использовать класс-обертку, который расширял BasicEvent.