首页 文章

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

提问于
浏览
4

我有一个报告使用以下行在页脚中显示“页面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>

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

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

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

我正在使用Jasper Reports 4.1.2 .

Edit: 即使删除了变量并且我使用了

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

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

1 回答

  • 5

    我终于找到了解决方案:

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

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

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

相关问题