相关疑难解决方法(0)

在JasperReport中创建/传递Java bean数据源

我在我的JSF应用程序中使用JasperReport和ireport来动态生成报告.这就是我想要实现的目标: -

  1. 我的结构(读作HashMap/ArrayList)包含需要传递给报表的数据,以便在报表中显示相同的数据.

  2. 我的报告已经包含一个数据源连接,我使用该连接从DB获取一些值并在报告中填充它.

  3. 我正在创建一个子报表,以便对于需要从代码传递的数据,我可以使用子报表并将此子报表嵌入主报表中.

我的问题是: - 1.我无法将集合(读作HashMap/ArrayList)传递给子报告,用我的代码中的数据填充它.

我绝对相信必须有整个集合传递给子报表,以填充它的一些方法,我也试过但是创建一个JavaBean数据源连接,同时创造它说缺少类路径条目的连接.

我不能在jar中捆绑各自的类并将jar放在classpath中,因为值在结构中不断变化,....

任何人都可以指导我如何创建/传递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; …
Run Code Online (Sandbox Code Playgroud)

java reporting jasper-reports

10
推荐指数
1
解决办法
3万
查看次数

标签 统计

jasper-reports ×1

java ×1

reporting ×1