2010-12-14 30 views

Trả lời

33

iReport (JasperReports) sử dụng Ternary operator.

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

trở thành:

boolean condition ? execute true code : execute false code 

Ví dụ, nếu bạn đã tạo ra một biến với các biểu thức sau đây:

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

Sau đó, giá trị của biến sẽ là "Cuộc sống, vũ trụ, Tất cả mọi thứ "nếu và chỉ khi, giá trị số nguyên của $F{column_value} bằng 42.

Ở đâu những điều có được một chút ngớ ngẩn là khi bạn phải có điều kiện lồng nhau. Đối với những, đặt điều kiện lồng nhau trong ngoặc và trên một dòng riêng biệt:

condition1 ? 
    (condition2 ? true_code2 : false_code2) : 
    false_code1 

Vì vậy, khi bạn cần phải làm nhiều trong số họ:

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

ví dụ về biểu hiện trong iReport:

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

Bạn có thể sử dụng điều kiện if-else như thế này trong Jasper Report: nếu tên khách hàng không ghi '-' (apsent) khác viết tên khách hàng của bạn. Hãy cẩn thận cho loại dữ liệu trường của bạn!

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

Các vấn đề liên quan