如何将javabeans列表传递给子报表?

时间:2016-05-05 19:18:21

标签: java jasper-reports datasource javabeans subreport

我试图在子报表中使用javabean列表,该子报表包含2个字段以及声明为

的getter和setter
public class ProjectEventBean implements java.io.Serializable {
    private int projectId;
    private List<EventCostEntity> eventCostObjectList= new ArrayList<EventCostEntity>(); 
}

我的主要报告有以下内容

        <subreport>
            <reportElement x="4" y="460" width="564" height="58" uuid="2e209cbe-a44e-4664-b31c-5bd0971dfd6e"/>
            <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{eventCostObjectList})]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{SUBREPORT_DIR}.toString()+"/eventDetail2_Costs.jasper"]]></subreportExpression>
        </subreport>

我认为这是传递列表的正确方法,但我无法弄清楚我需要在子报表中放置什么才能在EventCostEntity中检索相应的实体值。

     <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="eventDetail2_Costs" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="c0905867-c90a-49e0-86c6-75dc8b0ae946">
<queryString>
    <![CDATA[]]>
</queryString>
<field name="eventCostObjectList" class="java.util.List">
    <fieldDescription><![CDATA[eventCostObjectList]]></fieldDescription>
</field>
<field name="name" class="java.lang.String">
    <fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<field name="cost" class="java.math.BigDecimal">
    <fieldDescription><![CDATA[cost]]></fieldDescription>
</field>
<columnHeader>
    <band height="80" splitType="Stretch">
        <staticText>
            <reportElement x="-11" y="20" width="100" height="22" uuid="575d25b1-1ae6-4396-a874-b51393409bda"/>
            <textElement>
                <font size="12" isBold="true" isUnderline="true"/>
            </textElement>
            <text><![CDATA[Costs:]]></text>
        </staticText>
        <staticText>
            <reportElement x="0" y="60" width="100" height="20" uuid="5b824dd4-cd12-452e-ae3f-5e23e9d6b3d2"/>
            <text><![CDATA[Name:]]></text>
        </staticText>
        <staticText>
            <reportElement x="170" y="60" width="100" height="20" uuid="ca13b09f-2e1c-429f-881c-01ca6dad8c4a"/>
            <text><![CDATA[Costs]]></text>
        </staticText>
    </band>
</columnHeader>
<detail>
    <band height="125" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="160" height="30" uuid="b2d51e70-2846-4e2b-8d8a-a8e77c909606"/>
            <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="170" y="0" width="100" height="30" uuid="53a43c1e-7b57-4416-b558-030ccff9c23b"/>
            <textFieldExpression><![CDATA[$F{cost}]]></textFieldExpression>
        </textField>
    </band>
</detail>
</jasperReport>

当我使用 Jaspersoft Studio 时,我将eventCostObjectList视为列表,而不是EventCostEntity的单个对象。

我的子报表中缺少什么才能使用列表中的单个对象? 这是我的子报告

    <?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="eventDetail2_Costs" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e2be79ab-b7a6-40e0-9024-b0c0bc3fa26f">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="EventCostEntity_DATAADAPTER.xml"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
        <topPen lineWidth="0.5" lineColor="#000000"/>
        <leftPen lineWidth="0.5" lineColor="#000000"/>
        <bottomPen lineWidth="0.5" lineColor="#000000"/>
        <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
        <topPen lineWidth="0.5" lineColor="#000000"/>
        <leftPen lineWidth="0.5" lineColor="#000000"/>
        <bottomPen lineWidth="0.5" lineColor="#000000"/>
        <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
        <topPen lineWidth="0.5" lineColor="#000000"/>
        <leftPen lineWidth="0.5" lineColor="#000000"/>
        <bottomPen lineWidth="0.5" lineColor="#000000"/>
        <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<style name="Table 1_TH" mode="Opaque" backcolor="#F0F8FF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
        <topPen lineWidth="0.5" lineColor="#000000"/>
        <leftPen lineWidth="0.5" lineColor="#000000"/>
        <bottomPen lineWidth="0.5" lineColor="#000000"/>
        <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<style name="Table 1_CH" mode="Opaque" backcolor="#BFE1FF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
        <topPen lineWidth="0.5" lineColor="#000000"/>
        <leftPen lineWidth="0.5" lineColor="#000000"/>
        <bottomPen lineWidth="0.5" lineColor="#000000"/>
        <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<style name="Table 1_TD" mode="Opaque" backcolor="#FFFFFF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
        <topPen lineWidth="0.5" lineColor="#000000"/>
        <leftPen lineWidth="0.5" lineColor="#000000"/>
        <bottomPen lineWidth="0.5" lineColor="#000000"/>
        <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<subDataset name="Dataset1" uuid="f42721f5-97f6-4d0b-8769-15899abedf7d">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="name" class="java.lang.String">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <field name="cost" class="java.math.BigDecimal">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
</subDataset>
<queryString>
    <![CDATA[]]>
</queryString>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band splitType="Stretch"/>
</title>
<pageHeader>
    <band splitType="Stretch"/>
</pageHeader>
<columnHeader>
    <band splitType="Stretch"/>
</columnHeader>
<detail>
    <band height="319" splitType="Stretch">
        <componentElement>
            <reportElement x="116" y="119" width="200" height="200" uuid="7ad39011-7d7e-4477-9b47-b243c2a97795">
                <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
            </reportElement>
            <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="Dataset1" uuid="5061a7f7-6c91-406c-9186-ddb3394facf6">
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
                </datasetRun>
                <jr:column width="100" uuid="07dae0b1-2020-4a45-a1c1-eeb849dad2c3">
                    <jr:tableHeader style="Table 1_TH" height="30"/>
                    <jr:columnHeader style="Table 1_CH" height="30">
                        <staticText>
                            <reportElement x="0" y="0" width="100" height="30" uuid="4c5989e0-cebe-48fa-b68b-1019d6595ec4"/>
                            <text><![CDATA[name]]></text>
                        </staticText>
                    </jr:columnHeader>
                    <jr:detailCell style="Table 1_TD" height="30">
                        <textField>
                            <reportElement x="0" y="0" width="100" height="30" uuid="46947bba-f80b-4bf1-bbc3-1ea3fafec171"/>
                            <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>
                <jr:column width="100" uuid="be2b6e8c-5962-4629-b557-bfe58e0daff8">
                    <jr:tableHeader style="Table 1_TH" height="30"/>
                    <jr:columnHeader style="Table 1_CH" height="30">
                        <staticText>
                            <reportElement x="0" y="0" width="100" height="30" uuid="391f3ed4-8369-4b5f-ab69-83b46d4ec7d1"/>
                            <text><![CDATA[cost]]></text>
                        </staticText>
                    </jr:columnHeader>
                    <jr:detailCell style="Table 1_TD" height="30">
                        <textField>
                            <reportElement x="0" y="0" width="100" height="30" uuid="60b796f7-3d06-442a-8a87-a25ef027dc48"/>
                            <textFieldExpression><![CDATA[$F{cost}]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>
            </jr:table>
        </componentElement>
    </band>
</detail>
<columnFooter>
    <band splitType="Stretch"/>
</columnFooter>
<pageFooter>
    <band splitType="Stretch"/>
</pageFooter>
<summary>
    <band splitType="Stretch"/>
</summary>

`

0 个答案:

没有答案
相关问题