Jasper reports 为什么在Jaspersoft Studio中对BigDecimal求和时表达式编辑器会出错?
我想对两个Jasper reports 为什么在Jaspersoft Studio中对BigDecimal求和时表达式编辑器会出错?,jasper-reports,Jasper Reports,我想对两个BigDecimal求和,但在此之前,我需要知道这个值不为null(我可以在Java端进行此检查,但我想尝试Jasper端) 所以,我做这个检查: ($F{a} != null ? $F{a} : new BigDecimal(0)) ($F{b} != null ? $F{b} : new BigDecimal(0)) 现在,我必须求和a和b,但如果我这样做: ($F{a} != null ? $F{a} : new BigDecimal(0)).add($F{b} != null
BigDecimal
求和,但在此之前,我需要知道这个值不为null(我可以在Java端进行此检查,但我想尝试Jasper端)
所以,我做这个检查:
($F{a} != null ? $F{a} : new BigDecimal(0))
($F{b} != null ? $F{b} : new BigDecimal(0))
现在,我必须求和a
和b
,但如果我这样做:
($F{a} != null ? $F{a} : new BigDecimal(0)).add($F{b} != null ? $F{b} : new BigDecimal(0))
我得到:
当前表达式无效。请核实一下
如何求解?假设您的字段都是类
java.math.BigDecimal
,并且您使用的是language=“java”
或language=“groovy”
你的表情没有什么不对
不要担心表达式编辑器很简单,它无法理解($F{a}!=null?$F{a}:新的BigDecimal(0))
是一个java.math.BigDecimal
,这就是为什么它声明“当前表达式无效。请验证它!”并在处显示一个红点。添加
只需按“确定”,即可享受您的结果
如果您想简化表达式或只是删除表达式编辑器中的错误,可以使用变量。假设您的字段都是类
java.math.BigDecimal
,并且您使用的是language=“java”
或language=“groovy”
你的表情没有什么不对
不要担心表达式编辑器很简单,它无法理解($F{a}!=null?$F{a}:新的BigDecimal(0))
是一个java.math.BigDecimal
,这就是为什么它声明“当前表达式无效。请验证它!”并在处显示一个红点。添加
只需按“确定”,即可享受您的结果
如果您想简化表达式或只是在表达式编辑器中删除错误,可以使用变量。我也有同样的问题。显式强制转换新的BigDecimal可以消除异常。使用
new Bigdecimal($F{a} != null ? $F{a} : new BigDecimal(0))
应该没有问题
我错了。强制转换消除了Jaspers的编译时异常,但在运行时抛出了“构造函数BigDecimal(NumberComparable)未定义”。请注意,编译时异常很糟糕,因为他们的方法是检查每次击键,并在键入时抛出警告。为了完成输入条件,关闭警告需要加倍的努力。现在我需要我的代码在没有演员阵容的情况下工作,我正准备尝试
($F{denominator} == 0 ? 0 : $F{numerator} / $F{denominator})
我也有同样的问题。显式强制转换新的BigDecimal可以消除异常。使用
new Bigdecimal($F{a} != null ? $F{a} : new BigDecimal(0))
应该没有问题
我错了。强制转换消除了Jaspers的编译时异常,但在运行时抛出了“构造函数BigDecimal(NumberComparable)未定义”。请注意,编译时异常很糟糕,因为他们的方法是检查每次击键,并在键入时抛出警告。为了完成输入条件,关闭警告需要加倍的努力。现在我需要我的代码在没有演员阵容的情况下工作,我正准备尝试
($F{denominator} == 0 ? 0 : $F{numerator} / $F{denominator})
A和B声明为代码> BigDecimal < /代码>吗?考虑接受这个问题的答案,如果仍然没有打开。A和B声明“代码> BigDecimal < /代码>?考虑是否接受这个问题的答案,如果仍然没有打开。