5

我有一个使用以下行在页脚中显示“Y 页 X”的报告:

<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>

在我们的测试环境中,一切正常。页码显示正确。

在客户环境中,事情很奇怪。不显示第二个文本字段。但是当我将第二个字段的评估类型更改为“现在”时,它会显示出来。

您知道什么可能导致我们和客户环境中的行为不同吗?您是否有任何提示,或者您是否知道有关呈现具有评估类型 Now 和 Report 的字段的任何详细信息,这可以帮助我解决问题?

我正在使用 Jasper 报告 4.1.2。

编辑: 即使变量被删除并且我使用

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

行为保持不变。使用评估时间 =“报告”,第二个文本字段不显示。有了“现在”。

4

1 回答 1

6

我终于找到了解决方案:

问题在于,在客户环境中,字段必须伸展,因为客户系统似乎使用了与我们系统不同的字体。在我们的环境中他们没有,在 JasperReports Ultimate Guide 中有以下关于拉伸行为的部分:

具有延迟评估的文本字段不会拉伸以获取所有表达式的内容。这是因为文本元素高度是在生成报告部分时计算的,即使引擎稍后返回文本字段的文本内容,元素高度也不会适应,因为这会破坏已经创建的布局。

因此,字段在评估类型的客户环境中消失!=“现在”,因为在这种情况下它们不会伸展。增加字段的高度有所帮助,但我认为从长远来看,我们将不得不更改字体设置以在我们的测试环境中具有相同的条件。

于 2012-09-05T14:43:51.363 回答