Подтвердить что ты не робот

Делать сравнение, если другое в JasperReports

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

if <field> == 0 then "-"

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

4b9b3361

Ответ 1

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)

Ответ 2

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

(
    $F{foo} == 0 ?
    "Planned" :
    $F{foo} == 1 ?
    "Reserved" :
    $F{foo} == 2 ?
    "Canceled" :
    $F{foo} == 3 ?
    "Absent" :
    $F{foo} == 4 ?
    "Complete" :
    "Unknown"
)

Ответ 3

Вы можете использовать условие if-else, подобное этому в отчете Jasper: если имя клиента равно null, напишите '-' (apsent), иначе напишите имя своего клиента. Будьте осторожны для своего типа данных полей!

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