[Struts 2.1.6 + Jasper Reports] Incompatível?

5 respostas
Emyus

Ola Senhores,

Gostaria de saber se alguem já integrou Struts 2.1.6 com jasper reports?

Rodei uma aplicação a exemplo que roda com struts 2.0.6(http://www.baptech.com/jasper/TestJasperReportWithStruts2.zip), tudo ok.
Quando eu substituo pelas libs atuais 2.1.6(tanto struts, quanto o plugin para jasperreports), o PDF gerado não está preenchido.

Alguém sabe o que pode estar acontecendo, no documentação do struts 2 num tem nenhum changelog sobre jasper na versão 2.1.6?

5 Respostas

furutani

Qual mensagem de erro aparece quando ele vai preencher o pdf?

Emyus

13/03/2009 19:15:31 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: Data source value for data source beanCollection was null.

O que acho estranho é pelo fato de mudar as lib’s o valor do beanCollection voltar nulo.

furutani

Eu não apostaria nas libs.
Dá uma debugada direito para ver se está realmente vindo dados.

Emyus

Os dados vem de uma coleção que eu mesmo populo dentro do método beanCollection

public static ArrayList<Person> beanCollection() {
		
		Phone phone1 = new Phone("home","913-906-9000");
		Phone phone2 = new Phone("work", "913-906-9001");
		Phone phone3 = new Phone("mobile", "(913-906-9002");
		
		ArrayList<Phone> phones = new ArrayList<Phone>();
		
		phones.add(phone1);
		phones.add(phone2);
		phones.add(phone3);
		//Create Person
		
		Person person = new Person("Bruce", "Phillips", phones );
		
		ArrayList<Person> people = new ArrayList<Person>();
		
		people.add(person);
		
		 phone1 = new Phone("home","913-907-6000");
		 phone2 = new Phone("work", "913-907-6001");
		 phone3 = new Phone("mobile", "(913-907-6002");
		
		 phones = new ArrayList<Phone>();
		
		phones.add(phone1);
		phones.add(phone2);
		phones.add(phone3);
		//Create Person
		
		person = new Person("Tom", "Jackson", phones );
		
		people.add(person);
		
		 phone1 = new Phone("home","913-908-6000");
		 phone2 = new Phone("work", "913-908-6001");
		 phone3 = new Phone("mobile", "(913-908-6002");
		
		 phones = new ArrayList<Phone>();
		
		phones.add(phone1);
		phones.add(phone2);
		phones.add(phone3);
		//Create Person
		
		person = new Person("Sue", "Smith", phones );
		
		people.add(person);		
		
		return people;

	}
fabianoizabel

Salve, Alex!

Apenas para registrar a solução encontrada aqui no GUJ, já que trabalhamos na mesma empresa. :smiley:
Partindo do mesmo exemplo, resolvi o problema de integração entre Struts 2.1.6 e JasperReports com as seguintes ações:

1 - Revi as dependências do Struts-JasperReports-Plugin, conforme o link: http://struts.apache.org/2.x/struts2-plugins/struts2-jasperreports-plugin/dependencies.html

2 - No lugar de implementar o método public static ArrayList beanCollection() {, criei, na Action, um ArrayList chamado beanCollection juntamente com seus acessores;

3 - Ainda na Action, sobrescrevi o método doReport, onde apenas populo beanCollection. O fluxo é repassado à engine do Jasper e o relatório é exibido com sucesso.

Atenciosamente,
Fabiano Izabel

Criado 13 de março de 2009
Ultima resposta 15 de mar. de 2009
Respostas 5
Participantes 3