pessoal no meu relatório de pedidos preciso colocar um subreport pra iterar os itens…
como faço isso a partir de um JRBeanCollectionDataSource ?
pessoal no meu relatório de pedidos preciso colocar um subreport pra iterar os itens…
como faço isso a partir de um JRBeanCollectionDataSource ?
Oi Cláuber, no blog do Furutani tem um tutorial bacana de como utilizar
mas no momento está desativado.
manda um email pra ele pedindo o tutorial
http://www.furutani.eti.br:8080/MostrarArtigo.action?codigo=5
O blog dele é:
http://www.furutani.eti.br/
[quote=clauber.ferreira]pessoal no meu relatório de pedidos preciso colocar um subreport pra iterar os itens…
como faço isso a partir de um JRBeanCollectionDataSource ?[/quote]
Você deve ter algum atributo do tipo List na classe Pedido, certo? Vou supor que este atributo se chama “itensPedido” e que você envia uma lista de objetos do tipo Pedido para o relatório principal.
Declare o atributo “itensPedido” como um field do tipo java.util.List no relatório principal (como você já deve estar fazendo para atributos String, Long, etc).
Na chamada de seu sub-relatório, inclua a expressão “new JRBeanCollectionDataSource($F{itensPedido})” para o parâmetro “REPORT_DATA_SOURCE”.
A utilização dos atributos do ItemPedido no sub-relatório não muda em nada (registre-os como fields e acesse via $F{…}).
–
Thiago Faria de Andrade, SCJP
OpenK Tecnologia
tiago fiz o q vc falou … deu esse erro aqui :
NESTED BY :
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F{itensPedido}
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:197)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:537)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:505)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:805)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:327)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:274)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:400)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1273)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:614)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:209)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:109)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:679)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at relatorios.GeraRel.imprimir(GeraRel.java:68)
at relatorios.PedidoRel.imprimirAnalitico(PedidoRel.java:22)
at actions.PedidoAct.exibirrel(PedidoAct.java:387)
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 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:360)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:228)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:202)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:177)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:147)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:80)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:204)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:120)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:59)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:174)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept(PrepareInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:156)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:124)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:180)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:200)
at org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:27)
at org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:26)
at org.apache.struts2.impl.RequestContextImpl.callInContext(RequestContextImpl.java:152)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:25)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:330)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:256)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: org.hibernate.collection.PersistentSet
at Untitled_report_1_1174595517593_434337.evaluate(Untitled_report_1_1174595517593_434337:267)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:186)
... 80 more
Ae galera consegui… valeu pela força…
esse erro q estava ocorrendo… resolvi com um cast…
Valeu!!!
To desenterrando mais Um
Mas vi que são duas maneiras diferentes de fazer o crosstab funcionar…
Mas axo que to meio fraco de cabeça e não to conseguindo entender como é que eu faço para isto funcionar corretamente…
Obrigado pela atenção de todos