Problemas ao utilizar o JRBeanCollectionDataSource quando se tem 2 listas distintas

3 respostas
EuclidesFilizola

Bom dia pessoal,

eu estou fazendo um relatorio só que me ocorreu a seguinte situação:

No momento atual, eu tenho uma lista de um tipo de objeto chamado “veiculo”. porém, surgiu eu ter que lançar também no mesmo relatorio, uma lista de objetos do tipo “Despesas.”

E o problema que eu estou enfrentando é que: quando era só uma lista, era molezinha, jogava dentro do dataSource, que jogava dentro do print, e talz talz…e já era… mas agora fica complicado… alguém pra me ajudar ?

com 1 lista apenas, eu faço da seguinte maneira:

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
				relatorio);


		JasperPrint print = JasperFillManager.fillReport(caminhoRelatorio, map,
				ds);


		JasperExportManager
				.exportReportToPdfFile(
						print,
						diretorioReal
								+ "/pages/relatorios/relatorios/Relatorio_Veiculo_Individual.pdf");

Como faço para injetar a outra lista?

eu tentei fazer assim:

criar um map e jogar dentro dele.

map.put("listaDespesas", listaDespesas);

e lá no ireport, eu criei um parametro do tipo java.util.Collection

e tentei trazer os resultados assim " listaDespesas.valorDespesa"

porém isso dae vem NULL. Alguém ae pra me ajudar ?

3 Respostas

fabiozoroastro

Euclides,

Creio que você tenha duas alternativas.

1ª: Criar uma classe java(TO) e criar suas duas listas nessa classe. Dessa forma, você passará como dataSource esse único TO que irá conter as duas listas.

public class MyDs{
   private List<Veiculo> veiculos;
   private List<Despesa> despesas;
//get/set
}

2ª: Fazer dessa forma que você fez mesmo. =). Tenta dar uma fuçada aê pra ver pq não está passando a lista corretamente.

Até.

EuclidesFilizola

problema ainda não consegui resolver … alguem pra dar força ? Como eu poderia usar um subrelatorio aqui ?

alexfe

vc desenvolve o novo subrelatorio como se fosse qualquer outro, e vc passa a lista de objetos como parametros para o relatorio.
desta forma

List<Despesas> lista = retornaDespesas(); JRBeanCollectionDataSource beans = new JRBeanCollectionDataSource(lista); map.put("despesas", beans);

no parametros 'despesas ’ no relatório principal vc defin e as propriedades :
name = despesas
Parameter Class = java.lang.Object
Description = despesas.

nas propriedades do componente subreport
vc define:
Subreport Expression = ''caminho do subrelatorio
Expression class = java.lang.String
Connection type = Use a data Source expression
Data Source Expression = $P{despesas} ‘que é o parametro’

Criado 24 de agosto de 2011
Ultima resposta 24 de ago. de 2011
Respostas 3
Participantes 3