делать сравнение, если еще в JasperReports - PullRequest
21 голосов
/ 14 декабря 2010

Я хочу сделать сравнение, например:

if <field> == 0 then "-"

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

Ответы [ 3 ]

37 голосов
/ 06 января 2011

iReport (JasperReports) использует Тернарный оператор .Например, рассмотрим следующую логику:

IF boolean condition THEN
  execute true code
ELSE
  execute false code
END IF

Используя троичный оператор, это становится:

boolean condition ? execute true code : execute false code

При использовании переменной со следующим выражением:

$F{column_value}.intValue() == 42 ? "Life, Universe, Everything" : "Naught"

Тогда значение переменной будет «Жизнь, Вселенная, Всё», если и только если целое значение $F{column_value} равно 42.

Когда вещи становятся немного тупыми, это когда вам нужноимеют вложенные условия.Для этого поместите вложенные условия в скобки и в отдельной строке:

condition1 ?
  (condition2 ? true_code2 : false_code2) :
  false_code1

Поэтому, когда вам нужно выполнить много из них:

condition1 ?
  (condition2 ?
    (condition3 ? true_code3 : false_code3) :
    false_code2) :
  (condition4 ? true_code4 : false_code4)
21 голосов
/ 13 октября 2011

пример выражения в ireport:

(
    $F{foo} == 0 ?
    "Planned" :
    $F{foo} == 1 ?
    "Reserved" :
    $F{foo} == 2 ?
    "Canceled" :
    $F{foo} == 3 ?
    "Absent" :
    $F{foo} == 4 ?
    "Complete" :
    "Unknown"
)
0 голосов
/ 14 июля 2017

Используйте условие if-else:

  1. если имя клиента пусто, напишите '-' (отсутствует), в противном случае напишите имя клиента.

Будьте внимательны к своему полютип данных!

<textFieldExpression class="java.lang.String">
  <![CDATA[
    $F{CustomerName} == null ? '-' : $F{CustomerName}
  ]]>
</textFieldExpression>
...