Unificar vários relatórios num único PDF
Bom dia.
estou precisando de ajuda para a seguinte situação:
já tenho alguns relatórios prontos, porém surgiu a necessidade de imprimir esses relatórios num único PDF.
não sei se tem como fazer isso no próprio IREPORT, ou se preciso fazer direto no JAVA.
alguém já passou por essa situação?
Desde já agradeço qualquer ajuda.
Att.: R. Barcelos.
Barcelos.java
Curtidas 0
Respostas
Davi Costa
07/01/2011
Cara não sei se seriam as melhores soluções,
uma é criar ese relatório ninja com todos os seus relatórios.
Outra solução é ler esses pdf gerados e unificá-los via Java.
Abaixo segue um link de como fazer isso, foca no exemplo da classe ParsingPDF:
https://www.devmedia.com.br/post-18843-Gerando-PDF--iText.html
Att Davi
uma é criar ese relatório ninja com todos os seus relatórios.
Outra solução é ler esses pdf gerados e unificá-los via Java.
Abaixo segue um link de como fazer isso, foca no exemplo da classe ParsingPDF:
https://www.devmedia.com.br/post-18843-Gerando-PDF--iText.html
Att Davi
GOSTEI 0
Barcelos.java
07/01/2011
Bom dia Davi.
Estou utilizando relatórios com o objeto,
no caso do parsingPDF, deixa eu ver se entendi
o primeiro passo para usá-lo eu preciso criar um relatório em branco no ireport?
e depois fazer cópias dos relatórios já existentes para este que criei em branco?
é isso?
segue abaixo código do relatório
public String geraRelsolicVo(String numSolic) throws Exception {
try {
SolicitacaoItemFacade solicItemFacade = new SolicitacaoItemImpl();
List<SolicitacaoItem> solicItens = solicItemFacade
.buscar(getNumSolicitacao());
List<RelSolicitacaoVo> relSolicItemVo = new ArrayList<RelSolicitacaoVo>();
for (SolicitacaoItem item : solicItens) {
RelSolicitacaoVo relSolicVo = new RelSolicitacaoVo(); relSolicVo.setNumSolicitacao(item.getSolicitacao()
.getNumSolicitacao());
relSolicVo.setDatSolicitacao((item.getSolicitacao()
.getDatSolicitacao()));
relSolicVo.setDscSolicitacao(item.getSolicitacao()
.getDscSolicitacao());
relSolicVo.setDscTramite(item.getSolicitacao().getTramite()
.getDscTramite());
relSolicVo.setDscTipo(item.getSolicitacao().getTipo()
.getDscTipo());
relSolicVo.setDscHospital(item.getSolicitacao()
.getDscHospital());
relSolicItemVo.add(relSolicVo);
}
RelatorioUtil ru = RelatorioUtil.getInstance();
ru.exibirRelatorio("RelSolicitacao.jasper", relSolicItemVo);
} catch (JRException e) {
MessagesUtil.inserirErro("Erro na Impressão.");
e.printStackTrace();
throw new RuntimeException(e);
}
return null;
}
Att R. Barcelos
try {
SolicitacaoItemFacade solicItemFacade = new SolicitacaoItemImpl();
List<SolicitacaoItem> solicItens = solicItemFacade
.buscar(getNumSolicitacao());
List<RelSolicitacaoVo> relSolicItemVo = new ArrayList<RelSolicitacaoVo>();
for (SolicitacaoItem item : solicItens) {
RelSolicitacaoVo relSolicVo = new RelSolicitacaoVo(); relSolicVo.setNumSolicitacao(item.getSolicitacao()
.getNumSolicitacao());
relSolicVo.setDatSolicitacao((item.getSolicitacao()
.getDatSolicitacao()));
relSolicVo.setDscSolicitacao(item.getSolicitacao()
.getDscSolicitacao());
relSolicVo.setDscTramite(item.getSolicitacao().getTramite()
.getDscTramite());
relSolicVo.setDscTipo(item.getSolicitacao().getTipo()
.getDscTipo());
relSolicVo.setDscHospital(item.getSolicitacao()
.getDscHospital());
relSolicItemVo.add(relSolicVo);
}
RelatorioUtil ru = RelatorioUtil.getInstance();
ru.exibirRelatorio("RelSolicitacao.jasper", relSolicItemVo);
} catch (JRException e) {
MessagesUtil.inserirErro("Erro na Impressão.");
e.printStackTrace();
throw new RuntimeException(e);
}
return null;
}
Att R. Barcelos
GOSTEI 0
Davi Costa
07/01/2011
O que eu sugeri foi o seguinte, vc gera todos seus relatórios em arquivos PDF e dpois vc cria um pdf lendo de todos esses pdfs já criados, gerando um único PDF, entendeu.
Mas n sei se é a melhor estratégia :/
Att Davi
Mas n sei se é a melhor estratégia :/
Att Davi
GOSTEI 0
David Alberto
07/01/2011
Uma solução seria vc usar Ireport/japer. Muito facil de usar. Se queser posso fazer um tutorial rapido para vc.
GOSTEI 0
David Alberto
07/01/2011
Você pode fazer subrelatorios. Como no exemplo abaixo.
1 - Da dois clicks sobre a chamada para o subreport no mestre;
2 - Vai até a aba de SubReport(Other);
3 - Vai para a aba de SubReport Return Values;
4 - Adicione a variavel de retorno, definindo o nome que ela terá no relatório mestre e o nome que ela possui no sub relatório.
Se funcionar responda.
1 - Da dois clicks sobre a chamada para o subreport no mestre;
2 - Vai até a aba de SubReport(Other);
3 - Vai para a aba de SubReport Return Values;
4 - Adicione a variavel de retorno, definindo o nome que ela terá no relatório mestre e o nome que ela possui no sub relatório.
Se funcionar responda.
GOSTEI 0
Barcelos.java
07/01/2011
Olá Davi.
Ainda não consegui, mas ach que estamos próximo:
seguinte só não consegui encontrar o item 2 - "Vai até a aba de SubReport(Other);
", acho que é por causa da versão do meu ireport(3.7.2).
1 - criei um relatorio chamado mestre.jrxml; 2 - no meu relatório mestre.jrxml criei uma variável chamada "numero" 2 - com o auxilio da paleta (Report Elements) cliquei e arrastei o componente Subreport dentro da band sumary do
meu relatório mestre, ou seja mestre.jrxml; 3 - nas propriedades do meu subreport fiz o passo 3 - propriedade return values 4 - no java implementei para chamar esse relatório mestre.jrxml // 5 - RELATÓRIO PROCESSO
public String geraRelProcessoVo(String numSolicitacao) throws Exception {
try {
// INSTANCIA A CLASSE DO VO
List<RelProcessoVo> relProcessoVo = new ArrayList<RelProcessoVo>(); SolicitacaoItemFacade solicItemFacade = new SolicitacaoItemImpl();
List<SolicitacaoItem> solicItens = solicItemFacade.buscar(getNumSolicitacao());
for (SolicitacaoItem item : solicItens) {
RelProcessoVo relSolicVo = new RelProcessoVo(); relSolicVo.setNumSolicitacao(item.getSolicitacao().getNumSolicitacao());
relProcessoVo.add(relSolicVo);
}
RelatorioUtil ru = RelatorioUtil.getInstance();
ru.exibirRelatorio("RelProcesso.jasper", relProcessoVo);
} catch (JRException e) {
MessagesUtil.inserirErro("Erro na Impressão.");
e.printStackTrace();
throw new RuntimeException(e);
}
return null;
}
", acho que é por causa da versão do meu ireport(3.7.2).
1 - criei um relatorio chamado mestre.jrxml; 2 - no meu relatório mestre.jrxml criei uma variável chamada "numero" 2 - com o auxilio da paleta (Report Elements) cliquei e arrastei o componente Subreport dentro da band sumary do
meu relatório mestre, ou seja mestre.jrxml; 3 - nas propriedades do meu subreport fiz o passo 3 - propriedade return values 4 - no java implementei para chamar esse relatório mestre.jrxml // 5 - RELATÓRIO PROCESSO
public String geraRelProcessoVo(String numSolicitacao) throws Exception {
try {
// INSTANCIA A CLASSE DO VO
List<RelProcessoVo> relProcessoVo = new ArrayList<RelProcessoVo>(); SolicitacaoItemFacade solicItemFacade = new SolicitacaoItemImpl();
List<SolicitacaoItem> solicItens = solicItemFacade.buscar(getNumSolicitacao());
for (SolicitacaoItem item : solicItens) {
RelProcessoVo relSolicVo = new RelProcessoVo(); relSolicVo.setNumSolicitacao(item.getSolicitacao().getNumSolicitacao());
relProcessoVo.add(relSolicVo);
}
RelatorioUtil ru = RelatorioUtil.getInstance();
ru.exibirRelatorio("RelProcesso.jasper", relProcessoVo);
} catch (JRException e) {
MessagesUtil.inserirErro("Erro na Impressão.");
e.printStackTrace();
throw new RuntimeException(e);
}
return null;
}
GOSTEI 0
Barcelos.java
07/01/2011
deu esse erro na página:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception javax.servlet.ServletException: #{relGeralForm.geraRelatorio}: java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: Subreport variable numSolicitacao not found.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause javax.faces.FacesException: #{relGeralForm.geraRelatorio}: java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: Subreport variable numSolicitacao not found.
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause javax.faces.el.EvaluationException: java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: Subreport variable numSolicitacao not found.
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: Subreport variable numSolicitacao not found.
br.org.isgh.compras.forms.RelGeralForm.geraRelProcessoVo(RelGeralForm.java:452)
br.org.isgh.compras.forms.RelGeralForm.geraRelatorio(RelGeralForm.java:162)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.el.parser.AstValue.invoke(AstValue.java:131)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause net.sf.jasperreports.engine.JRException: Subreport variable numSolicitacao not found.
net.sf.jasperreports.engine.fill.JRFillSubreport.checkReturnValues(JRFillSubreport.java:1040)
net.sf.jasperreports.engine.fill.JRFillSubreport.validateReport(JRFillSubreport.java:971)
net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:351)
net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:263)
net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1065)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1030)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:300)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:134)
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:938)
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:860)
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:387)
br.org.isgh.compras.util.RelatorioUtil.exibirRelatorio(RelatorioUtil.java:45)
br.org.isgh.compras.util.RelatorioUtil.exibirRelatorio(RelatorioUtil.java:69)
br.org.isgh.compras.forms.RelGeralForm.geraRelProcessoVo(RelGeralForm.java:448)
br.org.isgh.compras.forms.RelGeralForm.geraRelatorio(RelGeralForm.java:162)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.el.parser.AstValue.invoke(AstValue.java:131)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
GOSTEI 0
Robson Teixeira
07/01/2011
Olá Barcelos
no java adicione a sua variavel dentro de 1 map as variaveis no caso
map.put("numero",valor variavel); e informe ao jasper para que ele faza uso do valor
na geração do seu relatorio fazo isso pois quando uso subreport eu passo o diretorio onde está o .jasper
para que seja feito o relatorio com sucesso e no seu stacktrace postado o jasper não está achando o
numSolicitacao verifique o mesmo.
att
robson Passarella
no java adicione a sua variavel dentro de 1 map as variaveis no caso
map.put("numero",valor variavel); e informe ao jasper para que ele faza uso do valor
na geração do seu relatorio fazo isso pois quando uso subreport eu passo o diretorio onde está o .jasper
para que seja feito o relatorio com sucesso e no seu stacktrace postado o jasper não está achando o
numSolicitacao verifique o mesmo.
att
robson Passarella
GOSTEI 0
Barcelos.java
07/01/2011
Bom dia Robson.
tentei fazer com o Hashmap, mas ainda não deu certo.
mapProcesso = new HashMap<String, Solicitacao>();
Solicitacao numSolic = new Solicitacao();
mapProcesso.put(numSolic.getNumSolicitacao(), numSolic);
Att.: R. Barcelos.
GOSTEI 0
Barcelos.java
07/01/2011
Bom dia.
A variavel que foi adotada no subrelatório foi a numSolic, no entanto estou utilizando o subrelatório via objeto, ou seja, não utilizo select... no ireport e sim indico o caminho do objeto em questão.
não sei se é por isso que não consigo passar esse valor.
Agora o preciso fazer com que o subrelatório entenda a váriavel que estou passando para que o relatório mestre possa executar o subrelatório.
Desde já agradeço qualquer ajuda.
Att.: R.Barcelos.
GOSTEI 0
Barcelos.java
07/01/2011
Segue o log do erro:
10/01/2011 10:51:25 com.sun.faces.lifecycle.Phase doPhase
GRAVE: JSF1054: (Phase ID: INVOKE_APPLICATION 5, View ID: /rl_solicitacao.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@a81512]
10/01/2011 10:51:25 org.ajax4jsf.webapp.BaseXMLFilter doXmlFilter
GRAVE: Exception in the filter chain
javax.servlet.ServletException: #{relGeralForm.geraRelatorio}: java.lang.RuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.FacesException: #{relGeralForm.geraRelatorio}: java.lang.RuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
... 18 more
Caused by: javax.faces.el.EvaluationException: java.lang.RuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 28 more
Caused by: java.lang.RuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F
at br.org.isgh.compras.forms.RelGeralForm.geraRelProcessoVo(RelGeralForm.java:458)
at br.org.isgh.compras.forms.RelGeralForm.geraRelatorio(RelGeralForm.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 29 more
Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:195)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:589)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:557)
at net.sf.jasperreports.engine.fill.JRFillSubreport.getParameterValues(JRFillSubreport.java:494)
at net.sf.jasperreports.engine.fill.JRFillSubreport.getParameterValues(JRFillSubreport.java:460)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateParameterValues(JRFillSubreport.java:359)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:339)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:263)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1065)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1030)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:300)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:134)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:938)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:860)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:387)
at br.org.isgh.compras.util.RelatorioUtil.exibirRelatorio(RelatorioUtil.java:45)
at br.org.isgh.compras.util.RelatorioUtil.exibirRelatorio(RelatorioUtil.java:69)
at br.org.isgh.compras.forms.RelGeralForm.geraRelProcessoVo(RelGeralForm.java:454)
... 38 more
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '2328-11' with class 'java.lang.String' to class 'java.util.Map'
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:340)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:632)
at relProcesso_1294667068955_907885.evaluate(calculator_relProcesso_1294667068955_907885:259)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:182)
... 60 more
10/01/2011 10:51:25 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet Faces Servlet threw exception
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '2328-11' with class 'java.lang.String' to class 'java.util.Map'
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:340)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:632)
at relProcesso_1294667068955_907885.evaluate(calculator_relProcesso_1294667068955_907885:259)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:182)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:589)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:557)
at net.sf.jasperreports.engine.fill.JRFillSubreport.getParameterValues(JRFillSubreport.java:494)
at net.sf.jasperreports.engine.fill.JRFillSubreport.getParameterValues(JRFillSubreport.java:460)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateParameterValues(JRFillSubreport.java:359)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:339)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:263)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1065)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1030)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:300)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:134)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:938)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:860)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:387)
at br.org.isgh.compras.util.RelatorioUtil.exibirRelatorio(RelatorioUtil.java:45)
at br.org.isgh.compras.util.RelatorioUtil.exibirRelatorio(RelatorioUtil.java:69)
at br.org.isgh.compras.forms.RelGeralForm.geraRelProcessoVo(RelGeralForm.java:454)
at br.org.isgh.compras.forms.RelGeralForm.geraRelatorio(RelGeralForm.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Att.: R. Barcelos
GOSTEI 0
Robson Teixeira
07/01/2011
OLá barcelos
Com relação ao map segue o seguinte Map<String,Object>
onde a chave do map deve ser 1 String com o nome da variavel criada no IReport.
Segue 1 codigo de exemplo.
Map<String,Object> args = new HashMap<String, Object>();
args.put("SUBREPORT_DIR",getRequest().getServletContext().getRealPath(path));
A variavel path e 1 String onde passo o diretorio dentro do projeto em que se encontra os .jasper do subReport
o SUBREPORT_DIR e a variavel criada no IReport.
Segue tambem 1 maneira de gerar relatorio passando o map criado no java para o jasper
try {
JRBeanCollectionDataSource source = new JRBeanCollectionDataSource(collection);
if (args==null){
args = new HashMap<String, Object>();
}
//usado para internacionalizar o relatorio
args.put(JRParameter.REPORT_LOCALE, new Locale(getIdioma()));
return JasperFillManager.fillReport(filePath, args, source);
} catch (Exception e) {
e.printStackTrace();
}
Verifique também a variavel $F no relatorio e não esquecendo no relatorio mestre de passar 1 collection para o subRelatorio.
Boa sorte e espero ter ajudado.
att
Robson Passarella
Com relação ao map segue o seguinte Map<String,Object>
onde a chave do map deve ser 1 String com o nome da variavel criada no IReport.
Segue 1 codigo de exemplo.
Map<String,Object> args = new HashMap<String, Object>();
args.put("SUBREPORT_DIR",getRequest().getServletContext().getRealPath(path));
A variavel path e 1 String onde passo o diretorio dentro do projeto em que se encontra os .jasper do subReport
o SUBREPORT_DIR e a variavel criada no IReport.
Segue tambem 1 maneira de gerar relatorio passando o map criado no java para o jasper
try {
JRBeanCollectionDataSource source = new JRBeanCollectionDataSource(collection);
if (args==null){
args = new HashMap<String, Object>();
}
//usado para internacionalizar o relatorio
args.put(JRParameter.REPORT_LOCALE, new Locale(getIdioma()));
return JasperFillManager.fillReport(filePath, args, source);
} catch (Exception e) {
e.printStackTrace();
}
Verifique também a variavel $F no relatorio e não esquecendo no relatorio mestre de passar 1 collection para o subRelatorio.
Boa sorte e espero ter ajudado.
att
Robson Passarella
GOSTEI 0
Dyego Carmo
07/01/2011
Tentou utilizar a biblioteca iText para unificar estes PDFs ? tem ateh exemplos na pagina como fazer isto !
GOSTEI 0
Barcelos.java
07/01/2011
agora estou executando e o meu relatório e só é exibido o relatório mestre o subreport não aparece.
Desde já agradeço qualquer ajuda.
Att.: R. Barcelos
GOSTEI 0
Robson Teixeira
07/01/2011
Olá Barcelos
No Relatorio mestre você declara a area do subReport você passou tambem 1 collection para o subRelatorio???
O relatorio mestre tem 1 collection e o subReport recebe outra.Tipo você tem 1 collection de contratos e para cada contrato ha 1 collection de gestores e essa collection de Gestores vai para o subReport.
Verifique isso ok.
att
Robson Passarella Teixeira.
No Relatorio mestre você declara a area do subReport você passou tambem 1 collection para o subRelatorio???
O relatorio mestre tem 1 collection e o subReport recebe outra.Tipo você tem 1 collection de contratos e para cada contrato ha 1 collection de gestores e essa collection de Gestores vai para o subReport.
Verifique isso ok.
att
Robson Passarella Teixeira.
GOSTEI 0
Dyego Carmo
07/01/2011
Resolvido ?
GOSTEI 0
Barcelos.java
07/01/2011
Ok, resolvido. Obrigado e desculpem pelo atrazo do feedback.
GOSTEI 0