在JasperReports中进行比较

Chi*_*Chi 22 jasper-reports ternary-operator

我想做一个比较,如:

if <field> == 0 then "-"
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我使用JasperReports的语法吗?

Dav*_*vis 38

iReport(JasperReports)使用三元运算符.例如,请考虑以下逻辑:

IF boolean condition THEN
  execute true code
ELSE
  execute false code
END IF
Run Code Online (Sandbox Code Playgroud)

使用三元运算符,这变为:

boolean condition ? execute true code : execute false code
Run Code Online (Sandbox Code Playgroud)

使用具有以下表达式的变量时:

$F{column_value}.intValue() == 42 ? "Life, Universe, Everything" : "Naught"
Run Code Online (Sandbox Code Playgroud)

然后变量的值将是"Life,Universe,Everything",如果且仅当整数值$F{column_value}等于42时.

当你必须有嵌套条件时,事情变得有点迟钝.对于这些,将嵌套条件放在括号中并放在单独的行中:

condition1 ?
  (condition2 ? true_code2 : false_code2) :
  false_code1
Run Code Online (Sandbox Code Playgroud)

所以当你需要做很多事情的时候:

condition1 ?
  (condition2 ?
    (condition3 ? true_code3 : false_code3) :
    false_code2) :
  (condition4 ? true_code4 : false_code4)
Run Code Online (Sandbox Code Playgroud)


Mic*_*hel 21

ireport中表达式的示例:

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