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




У вас есть ошибка относительно логического?
Потому что вам нужно использовать 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 лет спустя)
Петтер Фриберг указывает на в комментариях:
In jasper report 6.0 this is not need:
You can return eitherbooleanorBooleana simple expression like$F{fieldName}.equals("hello")will work.
Вы можете увидеть демонстрацию этой команды в 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>
Я использую TIBCO Jaspersoft® Studio 6.12.2, и мне все еще пришлось использовать старый способ. Он скомпилирован и все еще печатает без ошибок.
@ g-otn Итак, как вы использовали JasperReports printWhenExpression в вашем случае?
@VonC, я использовал способ вашего ответа (до обновления): $F{somefield}.equals("something") ? Boolean.TRUE : Boolean.FALSE.
Другой плакат хорошо объяснил технические детали того, как его использовать, поэтому я постараюсь объяснить обстоятельства, в которых он может оказаться полезным.
По сути, он позволяет отображать или скрывать содержимое ячейки на основе логического выражения. Например, вы можете захотеть отобразить имя человека только в том случае, если этому человеку больше 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") должен работать без каких-либо дополнительных деталей. Он будет печатать, если условие истинно
Это не отвечает на исходный вопрос. Здесь не объясняется, как использовать
printWhenExpression. Это только объясняет, что выражению требуется логическое значение. Хотя «этому выражению требуется логическое значение» полезно, оно не совсем отвечает на вопрос «как использовать».