我使用的JasperReport及iReport我的JSF应用程序以动态生成报告。 这就是我想实现: -
我的结构(读作的HashMap / ArrayList中)包含需要被传递到报告,以便在报告中示出相同的数据。
我的报告中已经包含了对此我取出由DB一定的价值,并在报告中填充它的数据源连接。
我创建一个子报表,以便于需要从代码中传递的数据,我可以使用子报表并嵌入主报告这里面报表。
我的问题是: - 1.我无法通过集合(读作的HashMap / ArrayList的),以子报表从我的代码中的数据来填充它。
我绝对相信必须有整个集合传递给子报表,以填充它的一些方法,我也试过但是创建一个JavaBean数据源连接,同时创造它说缺少类路径条目的连接。
我不能捆绑一个罐子内的各个类别,把罐子类路径,因为值是不断地在改变结构,....
任何人都可以请指导我如何创建/传递一个Java bean的数据源的报告,使数据可以填充...
请指导...
更新部分: -
传递参数报告并生成报告Java代码: -
public class TestDataSource
{
public static void main(String[] args)
{
try {
JasperDesign jasperDesign = JRXmlLoader.load("D:\\jasperReports\\subReportDataSource.jrxml");
JasperReport jasperReport =(JasperReport)JasperCompileManager.compileReport(jasperDesign);
Map<String,Object> parameters = new HashMap<String,Object>();
parameters.put ("Title",generateCollection());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(generateCollection()));
JasperViewer.viewReport(jasperPrint);
}catch(Exception e)
{
e.printStackTrace();
}
}
public static ArrayList<PersonBean> generateCollection()
{
ArrayList<PersonBean> arrlist=new ArrayList<PersonBean>();
arrlist.add(new PersonBean("A", 20));
arrlist.add(new PersonBean("B",30));
arrlist.add(new PersonBean("C",40));
arrlist.add(new PersonBean("D",50));
arrlist.add(new PersonBean("E",40));
arrlist.add(new PersonBean("F",60));
return arrlist;
}
}
现在,我创建了一个新的报告(报告)..里面,我放在一个子报表(子报表)..配置的子报表数据源是新net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($ P {标题})
连接类型: - 使用一个数据源连接类型。
现在我的子报告里面我刚才放置两个静态字段,姓名和年龄。 我如何告诉我的报告/子报告存在,其被传递在HashMap中值打印值。