5

次の行を使用して、フッターに「page X of Y」を表示するレポートがあります。

<textField isStretchWithOverflow="true">
    <reportElement x="432" y="21" width="95" height="10" forecolor="#000000"/>
    <textElement textAlignment="Right">
        <font size="8"/>
    </textElement>
    <textFieldExpression><![CDATA[
        $R{Report.Footer.Label.Page} + " " + $V{PAGE_NUMBER}
    ]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" evaluationTime="Report">
    <reportElement x="527" y="21" width="20" height="10" forecolor="#000000"/>
        <textElement textAlignment="Right">
        <font size="8"/>
    </textElement>
    <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>

テスト環境では、すべて正常に動作します。ページ番号は正しく表示されます。

お客様の環境では、物事は非常に奇妙です。2 番目の textField は表示されません。しかし、2番目のフィールドの評価タイプを「現在」に変更すると表示されます。

私たちの環境とお客様の環境での動作の違いの原因は何だと思いますか? 問題を解決するのに役立つ、評価タイプ Now および Report のフィールドのレンダリングに関するヒントや詳細を知っていますか?

Jasper Reports 4.1.2 を使用しています。

編集: 変数が削除されて使用しても

<textFieldExpression><![CDATA["T"]]></textFieldExpression>

動作は同じままです。EvaluationTime="Report" では、2 番目のテキスト フィールドは表示されません。「今」とは。

4

1 に答える 1

6

私は最終的に解決策を見つけました:

問題は、顧客のシステムが私たちのシステムとは別のフォントを使用しているように見えるため、顧客の環境ではフィールドが拡大しなければならないことです。私たちの環境ではそうではなく、JasperReports Ultimate Guide にはストレッチ動作に関する次のセクションがあります。

評価が遅延されたテキスト フィールドは、式のすべてのコンテンツを取得するために拡張されません。これは、レポート セクションの生成時にテキスト エレメントの高さが計算され、後でエンジンがテキスト フィールドのテキスト コンテンツに戻ったとしても、すでに作成されているレイアウトが台無しになるため、エレメントの高さが適応されないためです。

したがって、評価タイプが != "Now" の顧客の環境ではフィールドが表示されなくなります。これは、この場合フィールドが拡張されないためです。フィールドの高さを大きくすることは役に立ちましたが、長期的には、テスト環境で同じ条件になるようにフォント設定を変更する必要があると思います.

于 2012-09-05T14:43:51.363 に答える