首页 文章

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

提问于
浏览
4

这是我的表达代码:

($F{Personel_ODEME}.equals(Boolean.TRUE)) ? "PAID" : "NO PAID"

如果Personel已付款,她/他的Jasper税务报告将显示为 PAID ,否则为 NO PAID . 在DB中,此字段是布尔类型,但表达式返回String类型 . 所以我收到了 Cannot cast from String to Boolean 错误 .

5 回答

  • 10

    问题源于你的测试 $F{Personel_ODEME}.equals(Boolean.TRUE) ,Jasper认为这是 StringBoolean 的比较,并不喜欢 . 要解决此问题,请尝试:

    ($F{Personel_ODEME}.equals(Boolean.TRUE.toString())) ? "PAID" : "NO PAID"
    

    这将导致 StringString 的比较 .

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

    edit:

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

  • 3

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

  • 1

    您必须将字段的Class Expression更改为java.lang.String,因为默认情况下它将是java.lang.Boolean . 当它评估你的if并尝试返回“PAID”或“NO PAID”时,该字段会尝试将其转换为Boolean,以便显示它 .

    所有功劳归于:

    http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=61775

  • 0

    试试这个:

    Boolean.valueOf($F{Personel_ODEME}.equals('TRUE')) ? "PAID" : "NO PAID"
    
  • 2
    ($F{Personel_ODEME}==true?"PAID":"NO PAID")
    

    注意:true(关键字)区分大小写 . 并且不应该是资本(TRUE)

相关问题