2010-12-14 6 views

Antwort

33

iReport (JasperReports) verwendet eine Ternary operator.

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

Becomes:

boolean condition ? execute true code : execute false code 

Zum Beispiel, wenn Sie eine Variable mit dem folgenden Ausdruck erstellen waren:

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

dann wird der Wert der Variablen wäre „Das Leben, Universum, Alles "wenn und nur wenn der ganzzahlige Wert von $F{column_value} gleich 42 ist.

Wo Dinge werden ein wenig stumpf, wenn Sie geschachtelte Bedingungen haben müssen. Für diese stellen die verschachtelten Bedingungen in Klammern und in einer separaten Zeile:

condition1 ? 
    (condition2 ? true_code2 : false_code2) : 
    false_code1 

Also, wenn Sie viele von ihnen tun müssen:

condition1 ? 
    (condition2 ? 
    (condition3 ? true_code3 : false_code3) : 
    false_code2) : 
    (condition4 ? true_code4 : false_code4) 
17

Beispiel Ausdruck in iReport:

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

Sie können die if-else-Bedingung wie folgt in Jasper Report verwenden: Wenn der Kundenname Null ist, schreiben Sie '-' (apsent), andernfalls schreiben Sie Ihren Kundennamen. Achten Sie sorgfältig auf Ihren Felddatentyp!

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