4

私は iReport 3.5.0 を使用しており、メイン レポート内でサブレポートを使用しています。サブレポート式の絶対パスを指定したくありませんが、たとえば、サブレポート式として「bpSubReport.jasper」を指定すると (サブとメインが同じディレクトリにあるため)、iReport は bpSubReport.jasper を見つけることができます。メイン レポートを bPReport.jasper にコンパイルしますが、私の Java (gwt) アプリケーションではできません。例外をスローします

net.sf.jasperreports.engine.JRException: Could not load object from location : bpSubReport.jasper

サブレポートの相対パスを指定して Java アプリを許可する方法について教えてください。それも見つけますか?ありがとう。

4

3 に答える 3

4

さて、私は答えを得ました。

できません。サブレポートに相対パスを使用することはできません。実行時に.jrxmlファイルをコンパイルしようとするかもしれませんが、外部サーバーまたはファイルシステムを使用するプロジェクトでは相対パスが機能しないようです。

于 2010-08-02T11:56:01.230 に答える
2

以下を使用できます。

Map paramater = new Hasmap();
paramater.put("SUBREPORT_DIR",source);// source is path your subreport
于 2010-09-11T01:21:34.760 に答える
1

すべての jrxml を、リソース (クラスパス内) の下のレポート フォルダーに保持します。

パラメータが作成されました:

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["reports/"]]></defaultValueExpression>
    </parameter>

サブレポート要素が作成されました:

<elementGroup>
                <subreport>
                    <reportElement uuid="60c50685-03c7-452b-b37a-dda4a2092d18" positionType="Float" mode="Transparent" x="15" y="567" width="517" height="200" isRemoveLineWhenBlank="true" backcolor="#FFFFFF"/>
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(yourList)]]></dataSourceExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "your_subreport.jasper"]]></subreportExpression>
                </subreport>
            </elementGroup>
于 2017-02-27T06:15:12.297 に答える