状況を説明しましょう: レポート A とサブレポート B および C があります。A は B を使用し、B は C を使用しますSUBREPORT_DIR
。A のデフォルト値は です$P{CUSTOM_SUBREPORT_DIR}
。A.jrxml には次のように表示されます。
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{CUSTOM_SUBREPORT_DIR}]]></defaultValueExpression>
</parameter>
<parameter name="CUSTOM_SUBREPORT_DIR" class="java.lang.String">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
Bの適切な値も必要なSUBREPORT_DIR
ので、iReport (サブレポートのプロパティ/パラメーター) を使用して渡しましたA.jrxml
。
<subreportParameter name="SUBREPORT_DIR">
<subreportParameterExpression><![CDATA[$P{SUBREPORT_DIR}]]></subreportParameterExpression>
</subreportParameter>
そして、レポート AI を生成しようとすると、net.sf.jasperreports.engine.JRException: Incompatible java.lang.Integer value assigned to parameter SUBREPORT_DIR in the B dataset.
$P{SUBREPORT_DIR}
それは整数ではなく、SUBREPORT_DIR
B サブレポートのパラメーターのタイプは文字列であると確信しています。iReport 4.0.2 を使用して作成したすべてのレポート。