Может кто-нибудь сказать мне, как использовать 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" ) должен работать без каких-либо дополнительных подробностей. Он будет распечатываться, если условие истинно