2

Javaライブラリへの呼び出しをiReport式にアタッチしようとしています。

helloworld文字列を返す非常に単純なライブラリでこれを試しました。

package utils;
public class Hello {
    public static String hello()
    {
        return "Hello";
    }
}

iReport内で、このAPIを使用したいと思います。上記のライブラリをjarファイルにコンパイルしました。[ツール]->[オプション]->[クラスパス]に場所を追加しました。

次に、次のことを試しました。

  • テキストフィールドの式を編集するnew utils.Hello().hello()
  • 新しいフィールドを作成し、そのタイプをに設定しutils.Helloます。次にfield.hello()、式でを使用します

どちらの場合も、helloを解決できないと文句を言います。ただし、クラスパスにあります。utils.Hello/utilsまた、レポートルートを右クリックして、Javaインポートディレクティブに追加しようとしました。どちらもクラスを取り上げていないようでした。

アドバイスをいただければ幸いです。

4

2 に答える 2

3

あなたの正しい表現は次のようになります:

<textFieldExpression><![CDATA[utils.Hello.hello()]]></textFieldExpression>

作業サンプル:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ..>
    <queryString>
        <![CDATA[SELECT DISTINCT city FROM address ORDER BY city]]>
    </queryString>
    <field name="CITY" class="java.lang.String"/>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{CITY}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[utils.Hello.hello()]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

レポートにインポート命令を追加することもできます。この場合、式は次のようになります。

<textFieldExpression><![CDATA[Hello.hello()]]></textFieldExpression>

作業サンプル:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ... whenNoDataType="AllSectionsNoDetail">
    <import value="utils.Hello"/>
    <title>
        <band height="41">
            <textField>
                <reportElement x="188" y="11" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[Hello.hello()]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

:どちらのサンプルでも、jarファイル(utils.Helloクラスを含む)はクラスパスに含まれている必要があります。

iReportでのクラスパスの設定

srciptletsの使用に関する詳細については、こちらをご覧ください

于 2012-10-23T07:03:42.127 に答える
0

フィールドタイプは、utils.HelloではなくStringにする必要があります

于 2012-10-23T05:50:06.887 に答える