Java JasperReport:net.sf.jasperreports.engine.fill.JRExpressionEvalException:评估表达式时出错:
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21521479/
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
JasperReport: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
提问by Girish K
I am generating a jasper report with Java.
It has a Student bean which contains college_name and a list of student_info(second bean).
Student_info contains student_Name and address.
I have set college_Name and the list of Student_info bean to Student bean.
我正在用 Java 生成一个 jasper 报告。它有一个 Student bean,其中包含 College_name 和 student_info 列表(第二个 bean)。Student_info 包含 student_Name 和地址。
我已将 College_Name 和 Student_info bean 的列表设置为 Student bean。
I am getting values when I set only the student_info(second bean) object (not List) to Student bean, but getting an error invalid expression when I pass the list of Student_info bean. I do not know how to get Student_info list and then its value like student_Name and address.
当我只将 student_info(second bean) 对象(而不是 List)设置为 Student bean 时,我得到了值,但是当我传递 Student_info bean 的列表时得到一个错误无效的表达式。我不知道如何获取 Student_info 列表,然后获取其值,如 student_Name 和地址。
It gives me the following error:
它给了我以下错误:
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
aa DEBUG net.sf.jasperreports.engine.util.DeduplicableRegistry: Found existing instance net.sf.jasperreports.engine.fill.JRTemplateText@526b3f for object net.sf.jasperreports.engine.fill.JRTemplateText@2b5c2d
Source text : $F{Student_infoDTOList}.getName()
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:244)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
aa DEBUG net.sf.jasperreports.engine.util.DeduplicableRegistry: Added object net.sf.jasperreports.engine.fill.JRTemplateText@b0c9f0
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1016)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:504)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:488)
aa DEBUG net.sf.jasperreports.engine.fill.JRFillTextField: created net.sf.jasperreports.engine.fill.JRTemplateText@b0c9f0 for (null, null)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:456)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2057)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969)
My JRXml file is:
我的 JRXml 文件是:
<textField isBlankWhenNull="false">
<reportElement key="textField" x="42" y="0" width="112" height="13" uuid="1e3a7dff-583c-4322-88cb-c2c0f1ea7569"/>
<textElement>
<font size="10"/>
</textElement>
<textFieldExpression><![CDATA[$F{Student_infoDTOList}.getName()]]></textFieldExpression>
</textField>
采纳答案by user1791574
You should follow this step.
您应该遵循此步骤。
- Define text field in detail band.
- Add a new field with name of attribute of object from list. e.g. student_name, address.
- right click on text field and click on edit expression. set field name as student_name.
- Now run your application.
- 在详细信息带中定义文本字段。
- 从列表中添加一个具有对象属性名称的新字段。例如学生姓名、地址。
- 右键单击文本字段,然后单击编辑表达式。将字段名称设置为 student_name。
- 现在运行您的应用程序。