Jasper 子报告未收到任何 F{}

Jasper subreport arent receiving any F{}

在我的主报表中,我有一个子报表标签:

<subreport>
    <subreportParameter name="quotaSanitarySeal">
        <subreportParameterExpression><![CDATA[$F{quotaSanitarySeal}]]>
        </subreportParameterExpression>
            </subreportParameter>
    <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
    <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "subReportTest.jasper"]]>
    </subreportExpression>
</subreport>

但是当我生成它时,它没有显示字段的值...

<textFieldExpression class="java.lang.String"><![CDATA[$F{quotaSanitarySeal} == 0.0 ? "" : $F{quotaSanitarySeal}]]></textFieldExpression>

我错过了什么?我必须在我的 subReportTest 中做些什么吗?

当您将字段或变量或参数传递给子报表时。这些值将存储在子报表的参数部分中。

因此,当您传递一个字段时,您必须在子报表中创建一个相应的参数字段,在您的情况下,在您的子报表中创建一个名为 "quotaSanitarySeal" 的参数。添加参数后,您可以将值传递给主报告中的参数,如下所示,

<subreport>
    <subreportParameter name="quotaSanitarySeal">
        <subreportParameterExpression><![CDATA[$F{quotaSanitarySeal}]]>
        </subreportParameterExpression>
    </subreportParameter>
    <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]</dataSourceExpression>
    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subReportTest.jasper"]]></subreportExpression>
</subreport>

成功传递值后,您可以在子报表中使用如下参数,

<textFieldExpression class="java.lang.String"><![CDATA[$P{quotaSanitarySeal} == 0.0 ? "" : $P{quotaSanitarySeal}]]></textFieldExpression>

注意:对于"subreportExpression",不需要设置类型class="java.lang.String"

希望对您有所帮助。