No se puede recuperar el valor de un JavaBean mientras se generan informes utilizando la API JasperReports

Estoy tratando de generar un informe JR simple de una lista.

Sigo recibiendo Error al recuperar el valor del campo de bean: nombre

Este error se debe a un método getter incorrecto, ya que jasper usa la reflexión para tomar los campos de un bean. Sin embargo, incluso después de corregir el método getter-name. Sigo recibiendo esta excepción. ¿Hay algún otro problema?

Mi archivo jrxml es

                                                                      

La clase de frijoles es

 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 getDataBeanList() { ArrayList list = new ArrayList(); 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; } } 

Y estoy generando informes aquí

 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)); 

¿Necesitamos hacer más modificaciones a la clase Bean?

La solución es muy simple: debe cambiar el modificador de acceso de la clase JavaBean a público .

Me gusta esto:

 public 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; } } 

No olvide que está usando su propio paquete.


Puede encontrar más información acerca de las fonts de datos JavaBean aquí

el atributo Bean debe comenzarse con letra pequeña

ejemplo:

 public class DataBean { private String name; private String dateStart; private String DateEnd; // ->dateEnd private String prixTotale; private String prixPayer;