Jasper Reports:当评估时间为"报告"时,文本字段消失

Mar*_*sch 4 jasper-reports

我有一个报告使用以下行在页脚中显示"页面X的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>
Run Code Online (Sandbox Code Playgroud)

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

在客户环境中,事情很奇怪.不显示第二个textField.但是当我将第二个字段的评估类型更改为"现在"时,它会显示.

您是否知道什么可能导致我们和客户环境中的行为之间的差异?您是否有任何提示或者您是否知道有关使用评估类型现在和报告来渲染字段的任何详细信息可以帮助我解决问题?

我正在使用Jasper Reports 4.1.2.

编辑: 即使删除了变量,我也会使用

<textFieldExpression><![CDATA["T"]]></textFieldExpression>
Run Code Online (Sandbox Code Playgroud)

行为保持不变.使用evaluationTime ="Report"时,不显示第二个文本字段.用"现在"就可以了.

Mar*_*sch 5

我终于找到了解决方案:

问题是在客户环境中,字段必须拉伸,因为客户系统似乎使用的是另一种字体,而不是我们的系统.在我们的环境中他们没有,在JasperReports终极指南中,有关于伸展行为的以下部分:

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

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