делать сравнения, если еще в JasperReports
Я хочу сделать сравнение, такое как:
if <field> == 0 then "-"
может кто-нибудь сказать мне синтаксис с помощью JasperReports?
3 ответов
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)
пример выражения в ireport:
(
$F{foo} == 0 ?
"Planned" :
$F{foo} == 1 ?
"Reserved" :
$F{foo} == 2 ?
"Canceled" :
$F{foo} == 3 ?
"Absent" :
$F{foo} == 4 ?
"Complete" :
"Unknown"
)
использовать условие if-else:
- если имя клиента равно null, напишите ' - ' (отсутствует), иначе напишите имя клиента.
будьте осторожны с типом данных поля!
<textFieldExpression class="java.lang.String">
<![CDATA[
$F{CustomerName} == null ? '-' : $F{CustomerName}
]]>
</textFieldExpression>