我最近对JasperReports库版本4.1.3进行了更新。以前,我有一个使用JasperReports 4.0.2创建的报告,语言是groovy。使用JasperReports 4.1.3运行它会生成异常(ClassCastException - 无法将java.lang.String强制转换为java.lang.Boolean)。
异常是在某种程度上正确生成的,因为我为文本字段的PrintWhen Expression设置了一个字符串(例如:“abc”)。问题是在更新到这个库之前,报告是有效的,即使是这样的表达式。
表达式如下:“any_string”被评估为 true ,空字符串被评估为 false 。
是否有可以设置的属性,以便在不更改报告的情况下具有与以前相同的行为? (我知道解决方案是将条件改为适当的布尔值,但对我来说这不是一个可行的解决方案,因为涉及大量报告和许多复杂条件)。
谢谢!
答案 0 :(得分:0)
在分析了Jasperreports库的更改日志和SVN日志之后,我发现在4.1.1版本中进行了更改,并且不再对该类进行强制转换。这是关于表达式中值类弃用的重构的一部分。
从更改日志中: - 值类属性现在已在表达式对象中弃用;的类型 表达式不再需要指定;
解决方案是将expresion时的print修改为正确的布尔表达式,或者在表达式时为每个print添加一个强制转换。