有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在JasperReport表达式中使用和/或

我想在JasperReport表达式中使用和/或 我尝试了以下方法,但无效:

($P{pId} == $F{id1}) or
($P{pId} == $F{id2} and F{return}=true)
? "good" : "bad"

但我有以下例外:

Compilation exceptions: com.jaspersoft.ireport.designer.compiler.ErrorsCollector@1c9f37d  net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, calculator_report1_1318247835062_860381: 191: unexpected token: or @ line 191, column 144. 1 error      at net.sf.jasperreports.compilers.JRGroovyCompiler.compileUnits(JRGroovyCompiler.java:88)     at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:188)     at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)     at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:131)     at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:509)     at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)     at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)

你知道我为什么会遇到这个异常以及如何解决它吗


共 (1) 个答案

  1. # 1 楼答案

    andor不是有效的Java运算符。JasperReports使用Java表达式。由于所有Jasper参数和字段都是对象,我怀疑您是否想将它们与==进行比较。使用equals代替

    ($P{pId}.equals($F{id1}) ||
     ($P{pId}.equals($F{id2}) && F{return}.booleanValue()))
    ? "good" : "bad"