Как прослушать кнопку "Сохранить" или назначить событие после его нажатия в Vaadin 7

когда я редактирую встроенную сетку, я могу сохранить или отменить изменения строки сетки. Я хочу обновить свои записи в базе данных после нажатия кнопки "сохранить" (механизм базы данных уже выполнен) как я могу его реализовать?

мой контейнер: BeanItemContainer<CategoryOfService> beansContainer;

посмотреть редактирования : enter image description here

все, что мне нужно, это знать, какие слушатели я должен использовать. Я нашел некоторые CommitHandler что я могу добавить по классу EditorFieldGroup но я не могу ее реализовать правильно, может есть у к другой способ решить проблему.

3 ответов


есть своего рода способ захватить inline Save нажимаете на сетку.

grid.getEditorFieldGroup().addCommitHandler(new FieldGroup.CommitHandler() {
        @Override
        public void preCommit(FieldGroup.CommitEvent commitEvent) throws     FieldGroup.CommitException {
        //...
        }

        @Override
        public void postCommit(FieldGroup.CommitEvent commitEvent) throws     FieldGroup.CommitException {
        //...
        }
});

после нажатия Save вызываются оба метода preCommit и postCommit.

надеюсь, что это помогает :)


Grid в настоящее время не дает вам прямого способа добавления прослушивателей к кнопкам сохранения и отмены для встроенного редактора, хотя это может измениться в Vaadin 7.6.

в качестве обходного пути, прежде чем это произойдет, подход CommitHandler, который вы уже упомянули, все еще должен работать. Вы можете найти основной пример здесь. Содержимое вашего BeanItemContainer должно быть полностью обновлено на этапе postCommit.


grid.getEditor().addSaveListener((EditorSaveListener<Product>) event -> {
        //your stuf
        HibernateDataSource.updateProduct(event.getBean());
    });