Vaadin 7 - получить Beanitem из Grid Editor CommitEvent - PullRequest
0 голосов
/ 11 декабря 2018

Я (все еще) работаю с Vaadin 7.6.4, и я пытаюсь написать свой собственный FieldGroup.CommitHandler

Я пытаюсь извлечь текущий добавленный элемент (строку сетки) из самого commitEvent.

Во время отладки я вижу, что все Данные доступны в свойстве под названием itemId, если я использую следующее trainwreck: commitEvent.getFieldBinder().getItemDataSource() внутри Инспектора отладки, однако оно является приватным.itemId - это точная сущность бина, к которой я хочу получить доступ.Мне удалось получить доступ только к отдельным полям сущности со следующим обломком поезда: commitEvent.getFieldBinder().getField(propertyId).getValue().Однако это громоздко и не дает мне сущность в целом (и, если быть точным, не извлекает информацию из сущности, а скорее из отображающих элементов сетки).

Есть ли способполучить доступ к редактируемому объекту (который является источником данных для отредактированной строки сетки), не объявляя всю сетку как глобальное поле и вызывая grid.getSelected() -метод?

Кроме того, существует ли разница в данныхмежду post- и preCommit?

1 Ответ

0 голосов
/ 11 декабря 2018

Поскольку вы, очевидно, используете BeanItemContainer на основе вашего комментария itemId, вы можете попробовать что-то вроде следующего:

BeanItem item = (BeanItem) commitEvent.getFieldBinder().getItemDataSource();
MyBean bean = (MyBean) item.getBean();

getBean () в этом случае возвращает itemId.

...