IReports com Arraylist

Boa tarde, pessoas.

Alguém tem algum bom tutorial sobre IReports pra Java Web, mas que utilize um Arraylist pra preencher o relatório? (só encontrei exemplos com conexão a Banco de Dados).

Grato desde já, abraços.

Bom, é a mesma coisa…

jasperPrint = JasperFillManager.fillReport(report, params, collection); 

o último parametro é uma lista que serám preenchida no seu relatório.

Abrçs

Pesquisa por JrBeanCollectionDataSource

Boa tarde pessoal,

To tentando com o JRBeanCollectionDataSource aqui, mas mesmo assim continua dando erro

a minha classe:

[code]package controllers;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import models.Lote;

@Controller
public class RelatorioController {

@RequestMapping(value = "relatorio", method = RequestMethod.GET)
public void gerarRelatorio(HttpServletRequest request) {
	
	ServletContext contexto = request.getServletContext();
	String caminho = contexto.getRealPath("/WEB-INF/relatorios/Simple_Blue.jasper");

List lotes = new ArrayList();

	Lote lote = new Lote();
	lote.setIdLote("123");
	lote.setDataEntradaNoSistema(Calendar.getInstance());
	
	lotes.add(lote);
	
	try {
		JasperPrint print = JasperFillManager.fillReport(caminho, null, new JRBeanCollectionDataSource(lotes));
		JasperExportManager.exportReportToPdfFile(print, caminho);
	} catch (Exception e) {
		System.out.println("Erro na geração do Relatório. Detalhes do erro: \n" + e.toString());
	}
}

}
[/code]

erro retornado:

[code]exception

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
filtros.FiltroDeConexao.doFilter(FiltroDeConexao.java:32)

root cause

java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.getConstructor(Unknown Source)
net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:690)
net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:263)
net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:457)
net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:379)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:88)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:103)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:61)
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
controllers.RelatorioController.gerarRelatorio(RelatorioController.java:42)
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.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
filtros.FiltroDeConexao.doFilter(FiltroDeConexao.java:32)

root cause

java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.getConstructor(Unknown Source)
net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:690)
net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:263)
net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:457)
net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:379)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:88)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:103)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:61)
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
controllers.RelatorioController.gerarRelatorio(RelatorioController.java:42)
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.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
filtros.FiltroDeConexao.doFilter(FiltroDeConexao.java:32)
[/code]

Quem puder ajudar, agradeço muito.
Abraços.

OBS: o arquivo .jasper ta certinho no caminho especificado.

Consegui fazer o relatório principal rodar, agora preciso colocar um sub-relatório.

A situação é a seguinte: tenho a classe Lote, que possui um ArrayList de objetos do tipo Produtos (esse ArrayList ta como nome de listProdutos).
Então criei o relatório principal chamado “relatorio-lote” e um sub-relatório chamado “sub-relatorio-produtos”, sendo que o relatorio-lote recebe a lista de lotes, e o sub-relatorio-produtos os produtos referentes a cada lote.

Como criar o relatório, graças a ajuda do amigos aqui do GUJ, já consegui, mas preciso passar pro sub-relatorio-produtos essa lista de Produtos presente na Classe lote, tudo isso a partir de um ArrayList de objetos lote, sem uso de conexão a banco de dados (utilizando apenas os objetos que tenho, mesmo).

Tentei uns 20 tutoriais nessa última semana, porém, em nenhum consegui resolver isso.
Quem puder dar um help, agradeço muito.

Abraços.

Você pode passar a sua lista por parâmetro ao subrelatório não?!

Olá Planc.

map.put?