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
using and/or in JasperReport expression
提问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
and
and or
are 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"