Jasper报告中的表达式值:"无法从String转换为布尔值"错误

Ibr*_*GUN 4 java jasper-reports

这是我的表达代码:

($F{Personel_ODEME}.equals(Boolean.TRUE)) ? "PAID" : "NO PAID"
Run Code Online (Sandbox Code Playgroud)

如果Personel已获得报酬,则其读取的Jasper税务报告将PAID另行说明NO PAID.在DB中,此字段是布尔类型,但表达式返回String类型.所以我收到了一个Cannot cast from String to Boolean错误.

akf*_*akf 10

这个问题从测试茎$F{Personel_ODEME}.equals(Boolean.TRUE),其中碧玉正在考虑是StringBoolean比较,和犯规等.要解决此问题,请尝试:

($F{Personel_ODEME}.equals(Boolean.TRUE.toString())) ? "PAID" : "NO PAID"
Run Code Online (Sandbox Code Playgroud)

这将导致StringString比较.

值得注意的是,在Java中,a "true".equals(Boolean.TRUE)会导致错误.

编辑:

这似乎是Jasper'PrintWhen'表达式,它允许您确定是否打印单元格的内容.它期待Boolean.TRUEBoolean.FALSE作为其返回值.当您返回"PAID"时,Jasper会尝试将其评估String为a Boolean,它不能,因此它会抛出异常.


Ibr*_*GUN 5

好的,我修好了。我将$F{Personel_ODEME}'s 类型更改为 String,然后它就像一个魅力。