Делать сравнение, если другое в JasperReports Я хочу сделать сравнение, например: if <field> == 0 then "-" Может ли кто-нибудь сказать мне синтаксис с помощью JasperReports? Ответ 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>
Ответ 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>