2010-12-14 19 views

Odpowiedz

33

iReport (JasperReports) używa numeru Ternary operator.

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

Staje:

boolean condition ? execute true code : execute false code 

Na przykład, jeśli były, aby utworzyć zmienną z następującym wyrażeniem:

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

Następnie wartość zmiennej będzie „Życie, Wszechświat, Wszystko "if i tylko wtedy, gdy liczba całkowita wynosząca $F{column_value} jest równa 42.

gdzie rzeczy stają się trochę rozwlekłe, gdy musisz mieć warunki zagnieżdżone. Dla nich umieścić zagnieżdżone warunki w nawiasach i w osobnej linii:

condition1 ? 
    (condition2 ? true_code2 : false_code2) : 
    false_code1 

Więc kiedy trzeba zrobić wiele z nich:

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

przykład ekspresji w iReport:

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

Możesz użyć warunku-else takiego jak ten w Jasper Report: jeśli nazwa klienta jest pusta napisz "-" (apsent) jeszcze napisz swoją nazwę klienta. Zachowaj ostrożność dla swojego typu danych pola!

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