Может кто-нибудь сказать мне, как использовать printWhenExpression
из JasperReports?
Как использовать printWhenExpression в JasperReports
Ответы (4)
У вас есть ошибка относительно логического?
Потому что вам нужно использовать Boolean вместо примитивного типа.
So:
$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
a простое выражение типа$F{fieldName}.equals("hello")
будет работать.
Вы можете увидеть демонстрацию этой команды в разделе _ 7_
<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>
printWhenExpression
. Это только объясняет, что для выражения требуется логическое значение. Хотя это выражение нуждается в логическом значении, это полезно, но оно не совсем отвечает на вопрос, как использовать часть.
- person Brian Hamill; 11.07.2019
printWhenExpression
в вашем случае?
- person VonC; 02.06.2020
$F{somefield}.equals("something") ? Boolean.TRUE : Boolean.FALSE
.
- person g-otn; 03.06.2020
Другой плакат хорошо объяснил технические детали того, как его использовать, поэтому я постараюсь объяснить обстоятельства, в которых он может оказаться полезным.
По сути, он позволяет отображать или скрывать содержимое ячейки на основе логического выражения. Например, вы можете захотеть показать имя человека только в том случае, если этому человеку больше 18 лет, а затем в поле имени, используя выражение printwheneexpress, например:
$F{age} >= 18
Вы также можете использовать статический метод Boolean.valueOf (boolean b). Он выполняет ту же логику, что и ($ F {mesure} .startsWith (PH)? Boolean.TRUE: Boolean.FALSE), и хорошее практическое правило - не воссоздавать колесо.
Boolean.valueOf ($ F {mesure} .startsWith (PH))
Boolean.valueOf ($ F {userfd4}). Equals (1))
$ P {mesure} .equals ("200") должен работать без каких-либо дополнительных деталей. Он будет печатать, если условие истинно