'Vaadin TreeGrid Export
We are using both grid and treegrid in our application. And for downloading the data into excel we are using Haijian Exporter. This exporter is working fine with Grid, But it is not working with TreeGrid. When we click on the Export we are getting an error. I'm using the Haijian exporter 2.0.2 version in my application. Below is the code that I'm using for TreeGrid:
@Override
protected void buildLayout()
{
setSizeFull();
setMargin(true);
setSpacing(false);
addStyleName("layoutMargin");
HeaderComponent header = new HeaderComponent("Locations", true);
CssLayout filterSection = new CssLayout();
filterSection.setWidth(100, Unit.PERCENTAGE);
filterSection.addStyleName("view-filter");
Button newLocation = new Button("New Location");
newLocation.setSizeUndefined();
newLocation.setStyleName(ValoTheme.BUTTON_FRIENDLY);
newLocation.addClickListener(event -> {
toggleDetails();
item = new Location();
locationTreeGrid.setItems(item);
toggleDetails();
});
locationTreeGrid = createTreeGridTable();
Button export = new Button("Export");
export.setIcon(VaadinIcons.LIST_UL);
export.addStyleName("move-right");
StreamResource excelStreamResource = new StreamResource(() -> Exporter.exportAsExcel(locationTreeGrid), "Locations Report.xlsx");
FileDownloader excelFileDownloader = new FileDownloader(excelStreamResource);
excelFileDownloader.extend(export);
header.addComponent(export);
filterSection.addComponents(newLocation);
locationTreeGrid.addItemClickListener(newGridDetailsListener(locationTreeGrid));
addComponents(header, filterSection, locationTreeGrid);
setExpandRatio(locationTreeGrid, 1f);
}
private TreeGrid createTreeGridTable()
{
setEnabled(true);
TreeGrid<Location> locationTreeGrid = new TreeGrid();
locationTreeGrid.setSizeFull();
locationTreeGrid.addStyleName("tree-grid-class");
locationTreeGrid.setColumnReorderingAllowed(false);
locationTreeGrid.setSelectionMode(Grid.SelectionMode.SINGLE);
locationTreeGrid.addColumn(Location::getCode).setCaption("Code").setId("Code");
locationTreeGrid.addColumn(Location::getName).setCaption("Name").setId("Name");
locationTreeGrid.addColumn(Location::getDisplayPath).setCaption("Path").setId("Path");
locationTreeGrid.setDetailsGenerator(rowRef ->
{
LocationDetailsView detailsView = new LocationDetailsView(listener);
if(rowRef != null)
detailsView.edit(rowRef);
return detailsView;
});
locationTreeGrid.getEditor().setEnabled(true);
return locationTreeGrid;
}
Error:
org.vaadin.haijian.ExporterException: An error happened during exporting your Grid
at org.vaadin.haijian.FileBuilder.build(FileBuilder.java:55)
at org.vaadin.haijian.Exporter.exportAsExcel(Exporter.java:25)
at org.vaadin.haijian.Exporter.exportAsExcel(Exporter.java:13)
at com.iodine.imc.ui.views.sections.admin.locations.LocationsView.lambda$1(LocationsView.java:89)
at com.vaadin.server.StreamResource.getStream(StreamResource.java:143)
at com.vaadin.server.FileDownloader.handleConnectorRequest(FileDownloader.java:167)
at com.vaadin.server.ConnectorResourceHandler.handleRequest(ConnectorResourceHandler.java:90)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1608)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:464)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Hierarchical data provider doesn't support non-hierarchical queries
at com.vaadin.data.provider.HierarchicalDataProvider.size(HierarchicalDataProvider.java:51)
at org.vaadin.haijian.FileBuilder.buildRows(FileBuilder.java:115)
at org.vaadin.haijian.FileBuilder.buildFileContent(FileBuilder.java:66)
at org.vaadin.haijian.FileBuilder.build(FileBuilder.java:51)
... 76 common frames omitted
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
