when I create this report using string parameter naoda error but when I use my custom reports coming from the database I get the bytes and step a inputStream of parsing when I have only one sub n of the error but when the 2 sub and each of those sub with another sub from the Error: Error loading object from InputStream.
generate report with two internal sub reports inside one another with inputStream data
http://uploaddeimagens.com.br/imagens/br-com-erp-web-estoque-controleent...
two or more of the error
net.sf.jasperreports.engine.JRException: Error loading object from InputStream. at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:282) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:262) at net.sf.jasperreports.engine.fill.JRFillSubreport.loadReport(JRFillSubreport.java:396) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:375) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:437) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:351) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:281) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:504) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2026) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:752) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVerticalFiller.java:279) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:123) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:558) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:122) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:648) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:970) at br.com.controlese.web.wicket.page.consultas.CriarRelatorioControleEntregaJasper.gerarRelatorioDeControleDeEntregas(CriarRelatorioControleEntregaJasper.java:218) at br.com.controlese.web.wicket.page.PainelAcaoModalControleEntrega$2.onClick(PainelAcaoModalControleEntrega.java:86) at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:86) at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:146) at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:633) at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:250) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289) at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:230) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) Caused by: java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2298) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2767) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:798) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298) at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:57) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:277) ... 63 more
when I generate with parameter in string, I have satisfactory result in two or more deliveries in the report
but when I use the code to get the bytes of the report saved in the database
continuous using the JRBeanCollectionDataSource in the same way as the products
when you generate a report with only one entry of the right
but when there are 2 or more deliveries in the error report
http://uploaddeimagens.com.br/imagens/tibco_jaspersoft-_studio_2-png-4e2...
already tried to pass the JRBeanCollectionDataSource by parameter and dps use the JREmptyDataSource only but with one works but with two or more entries of the same error.
http://uploaddeimagens.com.br/imagens/tibco_jaspersoft-_studio-png
if anyone knows how to generate sub report inside another sub report using InputStream would appreciate
http://uploaddeimagens.com.br/imagens/br-com-erp-web-estoque-controleent...
http://uploaddeimagens.com.br/imagens/br-com-erp-web-estoque-controleent...
my cod
Search search = new Search(LayoutRelatorio.class); search.addFilterEqual("layout",LayoutRelatorio.LAYOUT_CONTROLE_ENTREGA); search.addFilterEqual("objetoEmpresas.empresa.id", controleEntrega.getSaidaEstoque().getEmpresa().getId()); search.addFetch("anexoLayout"); LayoutRelatorio layoutRelatorio = layoutRelatorioServico.searchUnique(search); String baseReportPath = ""; InputStream is = null; JasperPrint jasperPrint = null; if(layoutRelatorio == null){ params.put("entregas_path", Util.fileSeparator("controle_entrega/controle_entrega/entrega.jasper")); baseReportPath = Util.fileSeparator("controle_entrega/controle_entrega/controle_entrega.jasper"); is = BasePage.class.getClassLoader().getResource(baseReportPath).openStream(); }else{ //inicia os paramentros como inputStream , (alterar para inpuStream no jasper principal) params.put("entregas_path", BasePage.class.getClassLoader().getResource("controle_entrega/controle_entrega/entrega.jasper").openStream()); //relatorio personalizado com sub adicionados if(layoutRelatorio.getListaLayoutSubRelatorios()!=null && layoutRelatorio.getListaLayoutSubRelatorios().size() > 0){ //subLayouts Search searchSub = new Search(LayoutSubRelatorio.class); searchSub.addFetch("anexoLayout"); searchSub.addFilterEqual("layoutRelatorio.id", layoutRelatorio.getId()); List<LayoutSubRelatorio> layoutSubRelatorios = layoutRelatorioServico.searchSub(searchSub); for(LayoutSubRelatorio layoutSub :layoutSubRelatorios){ // mudar o parament class do paramentro no jrxml de string para java.io.InputStream InputStream sub = new ByteArrayInputStream(layoutSub.getAnexoLayout().getBytes()); if(layoutSub.getLayout().equals(LayoutSubRelatorio.LAYOUT_CONTROLE_ENTREGA_SUB_PRODUTO)){ params.put("entregas_path", sub); } } is = new ByteArrayInputStream(layoutRelatorio.getAnexoLayout().getBytes()); }else{ // relatorio pai personalizados com sub padrao is = new ByteArrayInputStream(layoutRelatorio.getAnexoLayout().getBytes()); } } try { if(entregasBeanList.isEmpty()){ jasperPrint = JasperFillManager.fillReport(is, params, new JREmptyDataSource()); }else{ jasperPrint = JasperFillManager.fillReport(is, params, new JRBeanCollectionDataSource(entregasBeanList)); } } catch (Exception e) { e.printStackTrace(); } ....for (Entrega entrega : controleEntrega.getEntregas()) { entregasBeanList.add(new EntregaBean(entrega)); } .... public class EntregaBean implements Serializable{ /** * */ private static final long serialVersionUID = 2444422503678630608L; private String numeroEntrega; private String situacao; private String dataPrevista; private String dataRealizada; private String tipoFrete; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); private List<EntregaProdutoBean> produtos = new ArrayList<>(); public EntregaBean(Entrega entrega) { this.situacao = entrega.getSituacaoNome(); this.dataPrevista = entrega.getDataPrevista() != null ? sdf.format(entrega.getDataPrevista()) : ""; this.dataRealizada = entrega.getDataEntrega() != null ? sdf.format(entrega.getDataEntrega()): ""; this.numeroEntrega = String.valueOf(entrega.getId()); setTipoFrete(entrega.getTipoFreteNome()); if (entrega.getEntregasProduto() != null && !entrega.getEntregasProduto().isEmpty()) { for (EntregaProduto entregaProduto : entrega.getEntregasProduto()) { produtos.add(new EntregaProdutoBean(entregaProduto)); } } } public JRDataSource getProdutos() { if(produtos != null && !produtos.isEmpty()) return new JRBeanCollectionDataSource(produtos); return new JREmptyDataSource(); } }
0 Answers:
No answers yet