Java JasperReports-带表的子报表-参数传递

Java JasperReports-带表的子报表-参数传递,java,jasper-reports,Java,Jasper Reports,我正在使用JRBeanCollectionDataSource对象来获取数据,并试图找出如何排列Java对象(以及,我猜,JRXML中的相关设置) 具体地说,我已经定义了一个独立运行的子报表,它使用一个表。为了填充表中的行,我传入一个数据源,它是一个数据bean数组,作为参数传递给报表 但是,当将该报表作为子报表嵌入到主报表中时,我不清楚应该如何传入相应的数据对象。不过,我似乎找不到任何这样的例子。如果你知道任何例子,那就太好了 否则,到目前为止我得到的是: 每个子报表都有几个参数和3个表 数据

我正在使用JRBeanCollectionDataSource对象来获取数据,并试图找出如何排列Java对象(以及,我猜,JRXML中的相关设置)

具体地说,我已经定义了一个独立运行的子报表,它使用一个表。为了填充表中的行,我传入一个数据源,它是一个数据bean数组,作为参数传递给报表

但是,当将该报表作为子报表嵌入到主报表中时,我不清楚应该如何传入相应的数据对象。不过,我似乎找不到任何这样的例子。如果你知道任何例子,那就太好了

否则,到目前为止我得到的是:

每个子报表都有几个参数和3个表

数据Bean(每个基本上都是表的一行):

主Bean(具有所有3个表的数据集以及每个子报表所需的3个参数):

import java.util.ArrayList;
公共类MasterBean{
私有ArrayList t1;//表1
私有ArrayList t2a;//表2第1列
private ArrayList t2b;//表2第2列
私人字符串免责声明;
私有字符串事件详细信息;
私有字符串事件类型;
公共阵列列表getT1(){
返回t1;
}
公共无效集合T1(ArrayList beanlist){
this.t1=beanlist;
}
公共数组列表getT2a(){
返回t2a;
}
公共无效集合2A(ArrayList beanlist){
this.t2a=beanlist;
}
公共数组列表getT2b(){
返回t2b;
}
公共无效集合2b(ArrayList beanlist){
this.t2b=beanlist;
}
公共字符串getDisclaimer(){
退货免责声明;
}
公共无效设置免责声明(字符串s){
此。免责声明=s;
}
公共字符串getEvent_detail(){
返回事件详细信息;
}
公共无效设置事件详细信息(字符串s){
this.event_detail=s;
}
公共字符串getEvent_type(){
返回事件类型;
}
公共void setEvent_类型(字符串s){
this.event_type=s;
}
}
为了填写报告(有趣的部分),我有点胡编乱造,因为我没有找到任何文档:

            ... (snip) ...
            DataBeanList DataBeanList = new DataBeanList();

            ArrayList<DataBean> t1_1 = DataBeanList.getDataBeanList(0);
            ArrayList<DataBean> t2a_1 = DataBeanList.getDataBeanList(1);
            ArrayList<DataBean> t2b_1 = DataBeanList.getDataBeanList(2);
            MasterBean sub1 = new MasterBean();
            sub1.setT1(t1_1);
            sub1.setT2a(t2a_1);
            sub1.setT2b(t2b_1);
            sub1.setDisclaimer("Disclaimer 1 goes here");
            sub1.setEvent_detail("Event Detail 1 goes here");
            sub1.setEvent_type("Event Type 1 goes here");

            ArrayList<DataBean> t1_2 = DataBeanList.getDataBeanList(0);
            ArrayList<DataBean> t2a_2 = DataBeanList.getDataBeanList(1);
            ArrayList<DataBean> t2b_2 = DataBeanList.getDataBeanList(2);
            MasterBean sub2 = new MasterBean();
            sub2.setT1(t1_2);
            sub2.setT2a(t2a_2);
            sub2.setT2b(t2b_2);
            sub2.setDisclaimer("Disclaimer 2 goes here");
            sub2.setEvent_detail("Event Detail 2 goes here");
            sub2.setEvent_type("Event Type 2 goes here");

            ArrayList<DataBean> t1_3 = DataBeanList.getDataBeanList(0);
            ArrayList<DataBean> t2a_3 = DataBeanList.getDataBeanList(1);
            ArrayList<DataBean> t2b_3 = DataBeanList.getDataBeanList(2);
            MasterBean sub3 = new MasterBean();
            sub3.setT1(t1_3);
            sub3.setT2a(t2a_3);
            sub3.setT2b(t2b_3);
            sub3.setDisclaimer("Disclaimer 3 goes here");
            sub3.setEvent_detail("Event Detail 3 goes here");
            sub3.setEvent_type("Event Type 3 goes here");

            ArrayList<MasterBean> masterList = new ArrayList<MasterBean>();
            masterList.add(sub1);
            masterList.add(sub2);
            masterList.add(sub3);

            JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(masterList);

            Map params = new HashMap();

            params.put("report_type","Master Report Type");

            try {
。。。(剪)。。。
DataBeanList DataBeanList=新的DataBeanList();
ArrayList t1_1=DataBeanList.getDataBeanList(0);
ArrayList t2a_1=DataBeanList.getDataBeanList(1);
ArrayList t2b_1=DataBeanList.getDataBeanList(2);
MasterBean sub1=新MasterBean();
sub1.setT1(t1_1);
sub1.setT2a(t2a_1);
sub1.setT2b(t2b_1);
子1.设定免责声明(“此处为免责声明1”);
子1.设置事件详细信息(“事件详细信息1在此显示”);
sub1.setEvent_type(“此处为事件类型1”);
ArrayList t1_2=DataBeanList.getDataBeanList(0);
ArrayList t2a_2=DataBeanList.getDataBeanList(1);
ArrayList t2b_2=DataBeanList.getDataBeanList(2);
MasterBean sub2=新MasterBean();
sub2.setT1(t1_2);
sub2.setT2a(t2a_2);
sub2.setT2b(t2b_2);
子2.设定免责声明(“此处为免责声明2”);
sub2.setEvent_detail(“此处为事件细节2”);
sub2.setEvent_type(“此处为事件类型2”);
ArrayList t1_3=DataBeanList.getDataBeanList(0);
ArrayList t2a_3=DataBeanList.getDataBeanList(1);
ArrayList t2b_3=DataBeanList.getDataBeanList(2);
MasterBean sub3=新MasterBean();
sub3.setT1(t1_3);
sub3.setT2a(t2a_3);
sub3.setT2b(t2b_3);
子3.设定免责声明(“此处为免责声明3”);
子3.设置事件详细信息(“此处为事件详细信息3”);
sub3.setEvent_type(“此处为事件类型3”);
ArrayList主列表=新的ArrayList();
主列表。添加(子1);
主列表。添加(子2);
主列表。添加(子3);
JRBeanCollectionDataSource=新的JRBeanCollectionDataSource(主列表);
Map params=新的HashMap();
参数put(“报告类型”、“主报告类型”);
试一试{
/deaton/jasper/jasperreports-5.5.1/demo/samples/testme/reports/CASummary.jrxml”); jasperreportjaspersub=jaspecompilemanager.compileReport(“/home/deaton/jasper/jasperreports-5.5.1/demo/samples/testme/reports/CAEventDetails.jrxml”); 参数put(“子报告参数”,jasperSub); 参数,tdatasource); params,新JREptyDataSource(2)); JasperFillManager.fillReportToFile(“build/reports/CASummary.jasper”,参数,数据源); …(剪断)

对于子报告,以下是JRXML中一些有趣的内容:

    ... (snip) ...
    <subDataset name="instrument_details" uuid="6d672249-f7b2-44ca-9f8a-6cb4995fdfab">
            <field name="c1_name" class="java.lang.String"/>
            <field name="c1_value" class="java.lang.String"/>
            <field name="c2_name" class="java.lang.String"/>
            <field name="c2_value" class="java.lang.String"/>
    </subDataset>
    <subDataset name="event_information" uuid="f2f954af-98c1-4f2b-9c57-e666d309fdce">
            <field name="c1_name" class="java.lang.String"/>
            <field name="c1_value" class="java.lang.String"/>
            <field name="c2_name" class="java.lang.String"/>
            <field name="c2_value" class="java.lang.String"/>
    </subDataset>
    <parameter name="disclaimer" class="java.lang.String"/>
    <parameter name="event_detail" class="java.lang.String"/>
    <parameter name="event_type" class="java.lang.String"/>

    <parameter name="DS1" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="DS2" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="DS3" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>

    <field name="event_comments" class="java.lang.String"/>
    <field name="event_description" class="java.lang.String"/>

    ... (skip down) ...

                    <componentElement>
                            <reportElement key="table" style="table" x="0" y="20" width="572" height="20" uuid="a3e03a5d-48cd-4bf4-82f4-df7de7958a75"/>
                            <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                                    <datasetRun subDataset="instrument_details" uuid="1e25358d-f600-4ea3-80b3-f15d4438992c">
                                            <datasetParameter name="REPORT_DATA_SOURCE">
                                                    <datasetParameterExpression><![CDATA[$P{DS1}]]></datasetParameterExpression>
                                            </datasetParameter>
                                    </datasetRun>
                                    <jr:column width="100" uuid="f4c26fd2-95ae-49a4-8b6f-8fbe6f47f810">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="100" height="20" uuid="578b42c1-3065-419a-8758-4e1b4946ca04"/>
                                                            <textFieldExpression><![CDATA[$F{c1_name}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                                    <jr:column width="186" uuid="ceb83fa5-ed21-4cca-b374-aae224688297">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="186" height="20" uuid="d5cdb3c8-af89-4af7-bd94-ee6fda45f327"/>
                                                            <textFieldExpression><![CDATA[$F{c1_value}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                                    <jr:column width="100" uuid="ca9810a7-6684-49e2-b673-ed84278a5d20">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="100" height="20" uuid="e6765684-2042-47e7-858d-b2b0d9ae8eaf"/>
                                                            <textFieldExpression><![CDATA[$F{c2_name}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                                    <jr:column width="186" uuid="c99af79c-5373-41c4-a05a-4538da4504df">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="186" height="20" uuid="e4079374-640c-4a79-b315-a1f33079bfd3"/>
                                                            <textFieldExpression><![CDATA[$F{c2_value}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                            </jr:table>
                    </componentElement>
    ... (above repeated for other tables) ...
…(剪断)。。。
…(跳下去)。。。
            ... (snip) ...
            DataBeanList DataBeanList = new DataBeanList();

            ArrayList<DataBean> t1_1 = DataBeanList.getDataBeanList(0);
            ArrayList<DataBean> t2a_1 = DataBeanList.getDataBeanList(1);
            ArrayList<DataBean> t2b_1 = DataBeanList.getDataBeanList(2);
            MasterBean sub1 = new MasterBean();
            sub1.setT1(t1_1);
            sub1.setT2a(t2a_1);
            sub1.setT2b(t2b_1);
            sub1.setDisclaimer("Disclaimer 1 goes here");
            sub1.setEvent_detail("Event Detail 1 goes here");
            sub1.setEvent_type("Event Type 1 goes here");

            ArrayList<DataBean> t1_2 = DataBeanList.getDataBeanList(0);
            ArrayList<DataBean> t2a_2 = DataBeanList.getDataBeanList(1);
            ArrayList<DataBean> t2b_2 = DataBeanList.getDataBeanList(2);
            MasterBean sub2 = new MasterBean();
            sub2.setT1(t1_2);
            sub2.setT2a(t2a_2);
            sub2.setT2b(t2b_2);
            sub2.setDisclaimer("Disclaimer 2 goes here");
            sub2.setEvent_detail("Event Detail 2 goes here");
            sub2.setEvent_type("Event Type 2 goes here");

            ArrayList<DataBean> t1_3 = DataBeanList.getDataBeanList(0);
            ArrayList<DataBean> t2a_3 = DataBeanList.getDataBeanList(1);
            ArrayList<DataBean> t2b_3 = DataBeanList.getDataBeanList(2);
            MasterBean sub3 = new MasterBean();
            sub3.setT1(t1_3);
            sub3.setT2a(t2a_3);
            sub3.setT2b(t2b_3);
            sub3.setDisclaimer("Disclaimer 3 goes here");
            sub3.setEvent_detail("Event Detail 3 goes here");
            sub3.setEvent_type("Event Type 3 goes here");

            ArrayList<MasterBean> masterList = new ArrayList<MasterBean>();
            masterList.add(sub1);
            masterList.add(sub2);
            masterList.add(sub3);

            JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(masterList);

            Map params = new HashMap();

            params.put("report_type","Master Report Type");

            try {
    ... (snip) ...
    <subDataset name="instrument_details" uuid="6d672249-f7b2-44ca-9f8a-6cb4995fdfab">
            <field name="c1_name" class="java.lang.String"/>
            <field name="c1_value" class="java.lang.String"/>
            <field name="c2_name" class="java.lang.String"/>
            <field name="c2_value" class="java.lang.String"/>
    </subDataset>
    <subDataset name="event_information" uuid="f2f954af-98c1-4f2b-9c57-e666d309fdce">
            <field name="c1_name" class="java.lang.String"/>
            <field name="c1_value" class="java.lang.String"/>
            <field name="c2_name" class="java.lang.String"/>
            <field name="c2_value" class="java.lang.String"/>
    </subDataset>
    <parameter name="disclaimer" class="java.lang.String"/>
    <parameter name="event_detail" class="java.lang.String"/>
    <parameter name="event_type" class="java.lang.String"/>

    <parameter name="DS1" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="DS2" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="DS3" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>

    <field name="event_comments" class="java.lang.String"/>
    <field name="event_description" class="java.lang.String"/>

    ... (skip down) ...

                    <componentElement>
                            <reportElement key="table" style="table" x="0" y="20" width="572" height="20" uuid="a3e03a5d-48cd-4bf4-82f4-df7de7958a75"/>
                            <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                                    <datasetRun subDataset="instrument_details" uuid="1e25358d-f600-4ea3-80b3-f15d4438992c">
                                            <datasetParameter name="REPORT_DATA_SOURCE">
                                                    <datasetParameterExpression><![CDATA[$P{DS1}]]></datasetParameterExpression>
                                            </datasetParameter>
                                    </datasetRun>
                                    <jr:column width="100" uuid="f4c26fd2-95ae-49a4-8b6f-8fbe6f47f810">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="100" height="20" uuid="578b42c1-3065-419a-8758-4e1b4946ca04"/>
                                                            <textFieldExpression><![CDATA[$F{c1_name}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                                    <jr:column width="186" uuid="ceb83fa5-ed21-4cca-b374-aae224688297">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="186" height="20" uuid="d5cdb3c8-af89-4af7-bd94-ee6fda45f327"/>
                                                            <textFieldExpression><![CDATA[$F{c1_value}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                                    <jr:column width="100" uuid="ca9810a7-6684-49e2-b673-ed84278a5d20">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="100" height="20" uuid="e6765684-2042-47e7-858d-b2b0d9ae8eaf"/>
                                                            <textFieldExpression><![CDATA[$F{c2_name}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                                    <jr:column width="186" uuid="c99af79c-5373-41c4-a05a-4538da4504df">
                                            <jr:detailCell style="table_TD" height="20" rowSpan="1">
                                                    <textField>
                                                            <reportElement x="0" y="0" width="186" height="20" uuid="e4079374-640c-4a79-b315-a1f33079bfd3"/>
                                                            <textFieldExpression><![CDATA[$F{c2_value}]]></textFieldExpression>
                                                    </textField>
                                            </jr:detailCell>
                                    </jr:column>
                            </jr:table>
                    </componentElement>
    ... (above repeated for other tables) ...
    ... (snip) ...
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
            <defaultValueExpression><![CDATA["/home/deaton/jasper/jasperreports-5.5.1/demo/samples/testme/build/reports/"]]></defaultValueExpression>
    </parameter>
    <parameter name="report_type" class="java.lang.String"/>
    <parameter name="master_source" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="subreportParameter" class="net.sf.jasperreports.engine.JasperReport"/>

    <field name="disclaimer" class="java.lang.String"/>
    <field name="event_detail" class="java.lang.String"/>
    <field name="event_type" class="java.lang.String"/>
    <field name="t1" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <field name="t2a" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <field name="t2b" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>

    ... (skip a bit) ...

    <detail>
            <band height="125" splitType="Stretch">
                    <subreport>
                            <reportElement x="0" y="0" width="572" height="125" uuid="aba34d2d-04ee-4ff7-803b-14424c825b3f"/>
                            <subreportParameter name="disclaimer">
                                    <subreportParameterExpression>
                                            <![CDATA[$F{disclaimer}]]>
                                    </subreportParameterExpression>
                            </subreportParameter>

                            <subreportParameter name="event_detail">
                                    <subreportParameterExpression>
                                            <![CDATA[$F{event_detail}]]>
                                    </subreportParameterExpression>
                            </subreportParameter>

                            <subreportParameter name="event_type">
                                    <subreportParameterExpression>
                                            <![CDATA[$F{event_type}]]>
                                    </subreportParameterExpression>
                            </subreportParameter>

                            <subreportParameter name="DS1">
                                    <subreportParameterExpression>
                                            <![CDATA[$F{t1}]]>
                                    </subreportParameterExpression>
                            </subreportParameter>

                            <subreportParameter name="DS2">
                                    <subreportParameterExpression>
                                            <![CDATA[$F{t2a}]]>
                                    </subreportParameterExpression>
                            </subreportParameter>

                            <subreportParameter name="DS3">
                                    <subreportParameterExpression>
                                            <![CDATA[$F{t2b}]]>
                                    </subreportParameterExpression>
                            </subreportParameter>

                            <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                            <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "CAEventDetails.jasper"]]></subreportExpression>
                    </subreport>
            </band>
    </detail>
    ... (snip) ...