【问题标题】:Jasper Report ireport 5.6.0 Comparing Doubles Condition not workingJasper Report ireport 5.6.0 比较双打条件不起作用
【发布时间】:2016-09-21 07:09:10
【问题描述】:

在 JasperReports 中比较双精度值时遇到很多问题。我所做的一切都不起作用。

它必须显示 3 条不同的消息,取决于一个 Double 值。代码是:

($P{number}.doubleValue() <= 1.0 ? msg($R{report.text2a}, $P{marshall}) :
 ($P{number}.doubleValue() > 1.0 && $P{number}.doubleValue() <= 2.0 ? msg($R{report.text2b}, $P{marshall}) : msg($R{report.text2c}, $P{marshall}))
)

参数“number”是正确的,因为它之前在报告中显示并且已经打印,但是当我生成PDF时,什么都没有显示。

如果值小于 1,则为一个文本,如果介于 1 和 2 之间,则为第二个文本,大于 2,则为第三个文本。

有什么帮助吗?

【问题讨论】:

  • 您的测试看起来不错,也许问题来自结果?试着打印简单的字符串而不是msg[..]
  • @DeathGun 你应该发布测试 jrxml

标签: jasper-reports


【解决方案1】:

我在更新版本的 jasper 上遇到了类似的问题,但在这里没有找到解决方案。我不知道为什么,但有时 jasper 在比较双精度值时会中断,有时它会起作用。对我有用的是通过比较创建一个中间变量。类似的东西:

<variable name="numberLTEqual" class="java.lang.Boolean">
    <variableExpression><![CDATA[$P{number}<=0]]></variableExpression>
</variable>

然后使用变量代替测试:

$V{numberLTEqual} ? msg($R{report.text2a}, $P{marshall}...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多