Subreport not rendering in main report

可紊 提交于 2019-12-13 19:40:35

问题


I have create a Jasper report and I am trying to integrate the report to the main report. I am able to populate the data in the subreport as-is, but if I integrate it to the main report I am not able render the data which I am rendering in the subreport. In fact I am getting it blank in the place where I have integrated the subreport.

I have also given the connection expression to the REPORT_CONNECTION and have give the sub-report Expression with the location of the jasper file which is in the same project and the same CLASSPATH (by "Table1Jasper.jasper" which is the name of my subreport Jasper). I am not able to find problem, where I am going wrong. Below is the code snippet of the report that I am working with.

This is my subreport JRXML:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2015-12-29T14:51:49 -->
<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="Table1Jasper" pageWidth="250" pageHeight="842" columnWidth="250" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="168d5180-08f7-4e70-a176-9757e902e707">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TableOneTestFactory"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="a" class="java.lang.String"/>
    <field name="b" class="java.lang.Integer"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="31" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="10" y="0" width="230" height="30" forecolor="#6E4A85" backcolor="#E9E1ED" uuid="c96bbba0-dd6f-4572-92ea-19b5a6165ce4"/>
                <box>
                    <topPen lineWidth="1.0" lineStyle="Double"/>
                    <leftPen lineWidth="1.0" lineStyle="Double"/>
                    <bottomPen lineWidth="1.0" lineStyle="Double"/>
                    <rightPen lineWidth="1.0" lineStyle="Double"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="14" isBold="true"/>
                </textElement>
                <text><![CDATA[TABLE ONES' FIELDS']]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="60" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="23" y="30" width="100" height="30" backcolor="#39FA50" uuid="611cad70-6062-4bc6-863c-bb4dbb4d5d55"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[a]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="123" y="30" width="100" height="30" backcolor="#39FA50" uuid="77893362-087e-4df0-9ca3-48acf820741f"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[b]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="29" splitType="Stretch">
            <textField>
                <reportElement mode="Opaque" x="23" y="-1" width="100" height="30" backcolor="#C28C8C" uuid="05928dbf-95d4-491b-9ef5-905a1fa18b2a"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{a}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="123" y="-1" width="100" height="30" backcolor="#C28C8C" uuid="54082691-6a9e-4c28-b960-b729bdae9458"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{b}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

This is my Main report JRXML, where I am integrating my subreport.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2015-12-29T14:14:23 -->
<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="MainReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a0a24146-f700-4edb-8746-7825a1fa923d">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TableOneTestFactory"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="0" y="0" width="560" height="30" forecolor="#000000" backcolor="#834EED" uuid="5f92ae14-f194-4e5e-bf26-8f11a9335900"/>
                <box>
                    <topPen lineWidth="1.0" lineStyle="Double"/>
                    <leftPen lineWidth="1.0" lineStyle="Double"/>
                    <bottomPen lineWidth="1.0" lineStyle="Double"/>
                    <rightPen lineWidth="1.0" lineStyle="Double"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="20" isBold="true"/>
                </textElement>
                <text><![CDATA[Main Report]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="329" splitType="Stretch">
            <subreport>
                <reportElement x="0" y="90" width="560" height="60" uuid="021bbef9-3a86-48a1-a15f-64627101521f"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["Table1Jasper.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

Please help me finding my problem and please give me a solution.


回答1:


You can not use relative path to your sub report, you need to use absolute path.

This is normally achieved by using a parameter (with default expression).

Example

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["C:\\The\\Path\\To\\Subreport\\"]]></defaultValueExpression>
</parameter>

And when calling subreport

<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Table1Jasper.jasper"]]></subreportExpression>

The use of parameter helps you when deploying your application you can for example in java evaluate the relative path of your application and the pass it as absolute path to your report in the parameter map.

Example in java (setting parameter in parameter map).

parameterMap.put("SUBREPORT_DIR", new File("theRelativeSubReportDir").getAbsolutePath() + File.separator);

and... remember when you change your subreport you need always to recompile into a .jasper



来源:https://stackoverflow.com/questions/34508171/subreport-not-rendering-in-main-report

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!