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?
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.
Os dados vem de uma coleção que eu mesmo populo dentro do método beanCollection
[code]
public static ArrayList 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;
}[/code]
Apenas para registrar a solução encontrada aqui no GUJ, já que trabalhamos na mesma empresa.
Partindo do mesmo exemplo, resolvi o problema de integração entre Struts 2.1.6 e JasperReports com as seguintes ações:
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.