java - JRException : java. lang.ClassCastException : java. lang.String 无法转换为 java.lang.Boolean

标签 java oracle jasper-reports

我在使用 Jaspersoft Studio 和 Oracle 数据库时遇到错误。 一旦有一些数据,下面的行

<printWhenExpression><![CDATA[$P{REPORT_TYPE}.substring(0,1)=="R"? $F{REASON_DELETED}:$F{REASON_ADOC}]]></printWhenExpression>

抛出以下错误:

net.sf.jasperreports.engine.JRException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

我不明白,为什么 Jasper Studio 会将它转换为 boolean 值,因为它被定义为字符串:

<field name="REASON_ADOC" class="java.lang.String"/>
<field name="REASON_DELETED" class="java.lang.String"/>

SQL 对我来说也很好:

NVL(cr.REASON_ADHOC,'-') AS reason_adoc,
NVL(cr.REASON_DELETED,'-') AS reason_deleted,

也在 View /表中:

REASON_DELETED  VARCHAR2(250)
REASON_ADHOC    VARCHAR2(4000)

最佳答案

你是对的,你的表达式返回一个字符串。但是 printWhenExpression 需要 boolean 表达式作为内容。根据docs :

printWhenExpression Definition of a Boolean expression that will determine if the element or the band should be printed or not.

目前尚不清楚您想要实现什么目标。您可能想改用 textFieldExpression

关于java - JRException : java. lang.ClassCastException : java. lang.String 无法转换为 java.lang.Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968314/

相关文章:

php - PHP的编译oci8,只停留在检查动态链接器的特性?为什么卡住了?

oracle - 无法使用 Oracle SQL Developer 以 SYS 身份登录数据库

jasper-reports - 如何从 Jasper Report (.jrxml) 引用 .jrtx 模板文件?

jasper-reports - 如何在 iReport 中绘制垂直线?

encoding - Jasper 报告 PDF 编码

Java可重复注释只有一个参数时无法识别

java - 如何获取大于最大整数值的整数值

java - 正则表达式的匹配部分

java - org.hibernate.MappingNotFoundException : resource: com/ypd/a/entity/Employee. hbm.xml 未找到

mysql - 通过传递一些常量字符串变量从数据库导出到 csv 文件