Я определил параметр в jrxml файле, который имеет тип boolean. Значение этого параметра поступает из моего java класса (true/false). Если значение true, то я не хочу отображать поле. Я написал выражение как показано ниже.
<printWhenExpression><![CDATA[$P{flag}==false]]></printWhenExpression>
В чем проблема с этим выражением. Я отображаю поле только тогда, когда значение флага равно false. Кто-нибудь может мне подсказать.
Попробуйте сделать это следующим образом:
<printWhenExpression><![CDATA[$P{flag}==Boolean.FALSE]]></printWhenExpression>
Вот моя экспрессия, которая работает:
<printWhenExpression><![CDATA[$V{REPORT_COUNT}.intValue() % 2 == 0 ? Boolean.TRUE : Boolean.FALSE]]></printWhenExpression>
После того, как я попробовал 2 других предложения здесь, и, вероятно, около 30 других вещей (java выражения убивают меня), я, наконец, получил следующее, что работает. В моем примере я не хочу печатать определенное текстовое поле, если булевский параметр PRINT_INSTRUCTIONS равен TRUE, только если он FALSE.
В iReport это выглядит следующим образом:
new Boolean($P{PRINT_INSTRUCTIONS}.booleanValue() == false)
В XML это выглядит следующим образом:
<printWhenExpression><![CDATA[new Boolean($P{PRINT_INSTRUCTIONS}.booleanValue() == false)]]></printWhenExpression>