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

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


person Community    schedule 17.11.2008    source источник


Ответы (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>
person VonC    schedule 17.11.2008
comment
Это не отвечает на исходный вопрос. Он не объясняет, как использовать printWhenExpression. Это только объясняет, что для выражения требуется логическое значение. Хотя это выражение нуждается в логическом значении, это полезно, но оно не совсем отвечает на вопрос, как использовать часть. - person Brian Hamill; 11.07.2019
comment
Я использую TIBCO Jaspersoft® Studio 6.12.2, и мне все еще пришлось использовать старый способ. Он скомпилирован и все еще печатает без ошибок. - person g-otn; 02.06.2020
comment
@ g-otn Итак, как вы использовали JasperReports printWhenExpression в вашем случае? - person VonC; 02.06.2020
comment
@VonC, я использовал способ вашего ответа (до обновления): $F{somefield}.equals("something") ? Boolean.TRUE : Boolean.FALSE. - person g-otn; 03.06.2020

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

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

$F{age} >= 18
person Dónal    schedule 19.11.2008

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

Boolean.valueOf ($ F {mesure} .startsWith (PH))

Boolean.valueOf ($ F {userfd4}). Equals (1))

person Community    schedule 12.02.2009

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

person Thakhani Tharage    schedule 12.07.2013