JRException: java.lang.ClassCastException: java.lang.String не может быть приведен к java.lang.Boolean

1

У меня есть ошибка с использованием Jaspersoft Studio с Oracle Database. Как только появятся некоторые данные, следующая строка

<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 не может быть добавлено в java.lang.Boolean

Я не понимаю, почему Jasper Studio применила его к булевому, поскольку он определен как String:

<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,

а также в представлении/таблице:

REASON_DELETED  VARCHAR2(250)
REASON_ADHOC    VARCHAR2(4000)
Теги:
jasper-reports

1 ответ

2
Лучший ответ

Вы правы, ваше выражение возвращает строку. Но printWhenExpression ожидает булево выражение в качестве содержимого. Согласно документам:

printWhenExpression Определение булевого выражения, которое будет определять, должен ли элемент или полоса печататься или нет.

Не понятно, чего вы пытаетесь достичь. textFieldExpression этого вы можете использовать textFieldExpression.

  • 0
    Спасибо! Я уверен, что теперь все работает ... надо было проверить класс printwhen expression!
  • 0
    Пожалуйста. Я рад, что смог помочь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню