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),其中碧玉正在考虑是String要Boolean比较,和犯规等.要解决此问题,请尝试:
($F{Personel_ODEME}.equals(Boolean.TRUE.toString())) ? "PAID" : "NO PAID"
Run Code Online (Sandbox Code Playgroud)
这将导致String以String比较.
值得注意的是,在Java中,a "true".equals(Boolean.TRUE)会导致错误.
编辑:
这似乎是Jasper'PrintWhen'表达式,它允许您确定是否打印单元格的内容.它期待Boolean.TRUE或Boolean.FALSE作为其返回值.当您返回"PAID"时,Jasper会尝试将其评估String为a Boolean,它不能,因此它会抛出异常.