Relatório com iReport - Problemas ao imprimir uma lista do java para iReport

Olá!
Estou postando uma duvida referente a relatórios.
Estou trabalhando com o iReport 3.7.
E obvio que estou com um pequeno problema.
Do java atiro para o iReport uma lista.
Esta lista esta preenchida com diversos atributos.
Só que na hora que coloco em um Groups no iReport ele atira a minha lista inteira de uma só vez.
Tem alguma forma de poder percorrer a minha lista no iReport e setar uma por uma das minhas Strings no relatório, sem ter que colocar todas de uma vez.

ArrayList listaDeString = new ArrayList();
// preencho minha lista
// passo para o iReport uma listaDeString
// pego minha lista no iReport,
// ai que vem o problema.
// minha lista é atirada toda de uma vez.
// tem como percorrer.
// Se tiver alguem me da uma ajuda.
// A principio meu DataField esta pegando e imprimindo minha lista sem quebra de linha, todas as minhas strings concatenadas.
// mas quero imprimir uma por uma, uma linha abaixo da outra.

Se alguem tiver uma ideia. Da um grito!

Se estás passando uma lista e agrupando, coloque:

  • no header / footer, os dados coincidentes ou agrupadores;
  • no detail, os dados diferentes da lista, os que serão ‘percorridos’. Essa banda já têm essa característica automaticamente.

Nota: para que o agrupamento funcione corretamente, é necessário que a lista esteja ordenada pelos itens agrupadores.

Abraço!

PS: dá uma melhorada na especificação do teu problema. Especificar mal o problema é a fonte da dor de cabeça da grande maioria dos desenvolvedores. Se queres que teus usuários especifiquem bem os problemas deles pra você, comece dando o exemplo :wink:

leoramos…
Tem como dar um exemplo nao!
to passando por isso e nao consigo fazer a lista… fiz ate um subreport com a lista pra tentar iterar ela em um detail mas nao deu certo…

O erro é este aki:

ERRO: Este erro na verdade nao entendi Bem… no meu codigo esta desta forma aki: $F{csuList}.getDescricao()
Error evaluating expression :
Source text : $F{csuList}

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F{csuList}
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.JRFillElement.evaluateExpression(JRFillElement.java:929)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:336)
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.fillColumnBand(JRVerticalFiller.java:2036)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
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 br.com.spdata.sysproj.controller.ConsultaPedidoServico.imprimir(ConsultaPedidoServico.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:777)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
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:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object ‘[br.com.spdata.sysproj.entity.Csu[id=4], br.com.spdata.sysproj.entity.Csu[id=6]]’ with class ‘java.util.ArrayList’ to class ‘net.sf.jasperreports.engine.JRDataSource’ due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: net.sf.jasperreports.engine.JRDataSource(br.com.spdata.sysproj.entity.Csu, br.com.spdata.sysproj.entity.Csu)
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:325)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:602)
at solicitacaoAlteracao_1308074003590_365210.evaluate(calculator_solicitacaoAlteracao_1308074003590_365210:193)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:182)
… 47 more

Como você está chamando a geração do teu relatório?
$F{csuList} é de que tipo no Jasper? É igual do do Java?

Se tu estás passando a lista, e esse csuList é tua lista, não tem porque tu usar o getDescricao pra buscar a descricao.
Cria um field ‘descricao’ do tipo adequado, e ele busca o valor.

E mais: você não precisa de um subReport pra fazer a repetição, a banda detail serve exatamente pra isso.

Exemplo até pode ser dado, mas pelo que eu tô vendo você sequer conhece o uso correto de cada banda , o que inviabiliza por completo o uso adequado da ferramenta. Acredito que você não quer ser mais um desenvolvedor “copy - paste”; estou certo?

Estou traduzindo a documentação do JasperReports há 2 meses, todo dia faço um pouco, mas só por hobby e colaboração com o projeto. Mas a documentação do site, mesmo em inglês, é ridícula de entender. Tá mastigadíssimo.

Tem exemplo aqui no fórum, mas sugiro fortemente que você sofra um pouquinho, vai valer a pena.

Abraço!

Pessoal consegui resolver o problema.
E Thiago fernando tipo se quiser eu te arrumo umas apostila que tenho, só me manda o teu mail.