I am trying to create a simple JR report from a list.
I keep getting Error getting field value from bean: name
This error occurs due to the wrong getter method name, since jasper uses reflection to take fields from the bean. However, even after the getter method name has been corrected. I keep getting this exception. Is there any other problem?
My jrxml file
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="simpleReport"> <field name="name" class="java.lang.String"/> <field name="count" class="java.lang.String"/> <title> <band height="50"> <staticText> <reportElement x="0" y="0" width="180" height="15"/> <textElement/> <text><![CDATA[Report]]></text> </staticText> </band> </title> <pageHeader> <band/> </pageHeader> <columnHeader> <band height="20"> <staticText> <reportElement x="180" y="0" width="180" height="20"/> <textElement> <font isUnderline="true"/> </textElement> <text><![CDATA[Event Name]]></text> </staticText> <staticText> <reportElement x="360" y="0" width="180" height="20"/> <textElement> <font isUnderline="true"/> </textElement> <text><![CDATA[Count]]></text> </staticText> </band> </columnHeader> <detail> <band height="20"> <textField> <reportElement x="180" y="0" width="180" height="15"/> <textElement/> <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> </textField> <textField> <reportElement x="360" y="0" width="180" height="15"/> <textElement/> <textFieldExpression><![CDATA[$F{count}]]></textFieldExpression> </textField> </band> </detail> <columnFooter> <band/> </columnFooter> <pageFooter> <band height="15"> <staticText> <reportElement x="0" y="0" width="40" height="15"/> <textElement/> <text><![CDATA[Page:]]></text> </staticText> <textField> <reportElement x="40" y="0" width="100" height="15"/> <textElement/> <textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> </textField> </band> </pageFooter> <summary> <band/> </summary> </jasperReport>
Bean class
class EventBean { private String name; private String count; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCount() { return count; } public void setCount(String count) { this.count = count; } } class EventNameList { public ArrayList<EventBean> getDataBeanList() { ArrayList<EventBean> list = new ArrayList<EventBean>(); list.add(generate("Flow", "100")); list.add(generate("Non flow", "300")); list.add(generate("Allow", "600")); list.add(generate("Deny", "50")); return list; } private EventBean generate(String name, String country) { EventBean bean = new EventBean(); bean.setName(name); bean.setCount(country); return bean; } }
And I create reports here
JasperCompileManager.compileReportToFile(inpuutjrxml, outputjasper); EventNameList list = new EventNameList(); JRBeanCollectionDataSource beanList = new JRBeanCollectionDataSource(list.getDataBeanList()); JasperPrint jasperPrint = JasperFillManager.fillReport(outputjasper, new HashMap(), beanList); JasperExportManager.exportReportToPdfStream(jasperPrint, new FileOutputStream(pefoutput));
Do I need to make any changes to the bean class?
source share