Как использовать printWhenExpression в JasperReports - PullRequest
15 голосов
/ 17 ноября 2008

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

Ответы [ 4 ]

21 голосов
/ 17 ноября 2008

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

Потому что вам нужно использовать 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 лет спустя)

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

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

4 голосов
/ 19 ноября 2008

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

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

$F{age} >= 18
2 голосов
/ 12 февраля 2009

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

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

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

1 голос
/ 12 июля 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...