Как использовать printWhenExpression в JasperReports

Может кто-нибудь сказать мне, как использовать printWhenExpression JasperReports?

Ответы

Ответ 1

У вас есть ошибка относительно логического?

Потому что вам нужно использовать Boolean вместо примитивного типа.

Так:

$F{mesure} != "PH"
($F{userfd4}).equals("1") ? true : false 

дал бы cannot cast from boolean to Boolean.

( $F{mesure}.startsWith("PH") ? Boolean.TRUE:Boolean.FALSE ) 
($F{userfd4}).equals("1") ? Boolean.TRUE : Boolean.FALSE  

было бы правильно.

Смотрите также этот пример


Обновление ноябрь 2015 (7 лет спустя)

Петер Фриберг отмечает в комментариях:

В отчете Jasper 6.0 это не нужно:
Вы можете вернуть либо boolean либо Boolean простое выражение, например, $F{fieldName}.equals("hello").


Вы можете увидеть демонстрацию этой команды в demo/samples/tableofcontents/reports/TocPart.jrxml

<reportElement style="Sans_Bold" positionType="Float" x="50" y="0" width="100" height="15" isRemoveLineWhenBlank="true" uuid="db8b68c6-4430-4199-8967-3ab5c077cb56">
    <property name="local_mesure_unitx" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.x" value="px"/>
    <printWhenExpression><![CDATA[$F{level} == 1]]></printWhenExpression>
</reportElement>

Ответ 2

Другой плакат проделал хорошую работу по разъяснению технических деталей того, как его использовать, поэтому я попытаюсь объяснить обстоятельства, в которых это может показаться полезным.

В принципе, он позволяет показывать или скрывать содержимое ячейки на основе логического выражения. Например, вам может потребоваться показать имя человека, только если этому лицу больше 18, а затем в поле имени, используя выражение printwhen, например:

$F{age} >= 18

Ответ 3

Вы также можете использовать статический метод "Boolean.valueOf(boolean b)". Он выполняет точно такую ​​же логику, как "($ F {mesure}.startsWith(" PH ")? Boolean.TRUE: Boolean.FALSE)" и хорошее эмпирическое правило не воссоздает колесо.

Boolean.valueOf($ F {} Mesure.startsWith( "ИД" ))

Boolean.valueOf($ F {} userfd4). Равно ( "1" ))

Ответ 4

$P {mesure}.equals( "200" ) должен работать без каких-либо дополнительных подробностей. Он будет распечатываться, если условие истинно