#java #jasper-reports #ireport
#java #jasper-отчеты #ireport
Вопрос:
я хочу использовать and / or в выражении 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:
and
и or
не являются допустимыми операторами Java. JasperReports использует выражения Java. И поскольку все параметры и поля Jasper являются объектами, я сомневаюсь, что вы хотите их сравнивать ==
. Вместо этого используйте equals .
($P{pId}.equals($F{id1}) ||
($P{pId}.equals($F{id2}) amp;amp; F{return}.booleanValue()))
? "good" : "bad"
Комментарии:
1. спасибо, все сработало нормально, и мне пришлось поставить все условия перед вопросительным знаком между одной скобкой (условия)? «true»: «false»