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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7696668/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 21:02:23  来源:igfitidea点击:

using and/or in JasperReport expression

javajasper-reportsireport

提问by Mahmoud Saleh

i want to use and/or in JasperReport expression i tried the following but it doesn't work:

我想使用和/或在 JasperReport 表达式中我尝试了以下但它不起作用:

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

but i am getting following exception:

但我收到以下异常:

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)

any ideas why i am getting this exception and how to solve it.

任何想法为什么我会收到此异常以及如何解决它。

回答by JB Nizet

andand orare not valid Java operators. JasperReports uses Java expressions. And since all Jasper parameters and fields are objects, I doubt you want to compare them with ==. Use equals instead.

and并且or不是有效的 Java 运算符。JasperReports 使用 Java 表达式。由于所有 Jasper 参数和字段都是对象,我怀疑您是否想将它们与==. 改用等于。

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