Vaadin Excel Uploader问题

时间:2018-03-19 08:40:38

标签: java excel spring-boot vaadin

我正在使用Spring Boot和Vaadin Framework开发一个Web应用程序,它假设有一个处理Microsoft Excel文档的功能,将数据从电子表格存储在自定义Java对象中,最后将它们保存到数据库中。我正在使用来自Vaadin目录的the Excel Uploader插件来处理这种东西。

正如the official examples中显示的这个附加组件一样,它完全适用于使用电子表格中的数据填充Vaadin Grid组件并正确读取而没有任何问题。但是,当我尝试将此数据存储在自定义对象中并因为ClassCastException而调用此数据类型的任何方法时,我遇到了问题。抛出此异常是因为程序试图转换相同数据类型的对象。问题在于,每当我想使用lambda添加SucceededListener时,从excel文档收集的数据被引用为通用Object类型的集合,因此需要将其转换为自定义对象以调用特定方法。但是,当程序运行并且我尝试通过UI上传excel文档时会抛出此异常,因为通用对象集合在某个时刻会成为自定义数据类型的集合。

这是配置Excel上传器的方法:

public void configureExcelUploader() {
    ExcelUploader<Person> excelUploader = new ExcelUploader<>(Person.class);
    excelUploader.addSuccededListener((event, items)) -> {
        List<Person> persons = (List<Person>) items;
        persons.callCustomMethod();
    });

    Upload uploadButton = new Upload("Upload");
    uploadButton.setReceiver(excelUploader);
    uploadButton.addSucceededListener(excelUploader);
}

我可能会错过一些东西,或者根本就不知道如何正确地进行这种操作。在这种特殊情况下,是否有人知道在自定义对象中存储结果的正确方法?

1 个答案:

答案 0 :(得分:0)

我通过从maven依赖项中删除DevTools解决了这个问题,一切都运行得很好。