【问题标题】:Jasper Reports: text field disappears when evaluation time is "Report"Jasper Reports:评估时间为“报告”时,文本字段消失
【发布时间】:2012-09-04 10:16:40
【问题描述】:

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

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

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

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

我正在使用 Jasper 报告 4.1.2。

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

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

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

【问题讨论】:

  • 您是否尝试增加这两个字段的大小(宽度和高度)?我认为客户环境中有很多页面,计数器值对于字段的宽度来说太大了。
  • 只有两页所以我认为这不可能是原因。此外,如果将评估时间更改为现在,则会显示该字段。即使在最后一页(在两种情况下都应该包含相同的内容)
  • 你在另一个风景中有相同的 JR 版本吗?
  • 我在所有环境中都有相同的 JR 版本。在我的本地机器上,在我们的测试环境和客户环境中。
  • 嗯。看起来像一个魔术。您是否尝试使用自己的变量(使用 evaluationTime 属性的这两个不同值)测试报告?

标签: jasper-reports


【解决方案1】:

我终于找到了解决办法:

问题在于,在客户环境中,字段必须拉伸,因为客户系统似乎使用了与我们系统不同的字体。在我们的环境中它们不会,在 JasperReports 终极指南中有以下关于拉伸行为的部分:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多