Código:
sin embargo al generarlo "manualmente mediante":<action name="reporteEstadoDeCuenta" class="mx.dsm.interschool.finanzas.actions.EstadoDeCuentaAction" method="reporteEstadoDeCuenta"> <result name="success" type="jasper"> <param name="location">/WEB-INF/reportes/estadoDeCuenta/estadoDeCuenta.jasper</param> <param name="dataSource">listaAlumnos</param> <param name="format">PDF</param> <param name="reportParameters">reportParams</param> </result> <result name="input">/WEB-INF/jsp/operacion/reporteEstadoDeCuenta/editReporteEstadoDeCuenta.jsp</result> </action>
Código:
salta un error diciendo que "Unknown property for class: Alumno" el cual es atributo que regresa la lista de cargos/pagos, necesito hacerlo mediante el fillreport, ya que me interesa que se envie por correo electronico y no que se imprima el reporte, si alguen puede ayudarme se los agredesco, dejo algo de mi codigo:JasperPrint jasperPrint = JasperFillManager.fillReport(ServletActionContext.getServletContext().getRealPath("/WEB-INF/reportes/estadoDeCuenta/estadoDeCuenta.jasper"), reportParams,dataSource);
mi clase Alumno:
Código:
mi jrxml:public class Alumno extends mx.dsm.interschool.catalogo.ejb.entity.Persona implements Serializable { @Transient private List ListaCargos=new ArrayList(); @Transient private List ListaPagos=new ArrayList(); @Transient private JRBeanCollectionDataSource ListaCargosDS; @Transient private JRBeanCollectionDataSource ListaPagosDS; public Alumno() { } public boolean equals(Object aObj) { if (aObj == this) return true; if (!(aObj instanceof Alumno)) return false; Alumno alumno = (Alumno)aObj; if ((getIdAlumno() != null && !getIdAlumno().equals(alumno.getIdAlumno())) || (getIdAlumno() == null && alumno.getIdAlumno() != null)) return false; return true; } public int hashCode() { int hashcode = 0; hashcode = hashcode + (getIdAlumno() == null ? 0 : getIdAlumno().hashCode()); return hashcode; } @ManyToOne(targetEntity=mx.dsm.interschool.catalogo.ejb.entity.Familia.class, fetch=FetchType.LAZY) @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.LOCK}) @JoinColumns({ @JoinColumn(name="IdFamilia", referencedColumnName="IdFamilia") }) @org.hibernate.annotations.LazyToOne(value=org.hibernate.annotations.LazyToOneOption.NO_PROXY) private mx.dsm.interschool.catalogo.ejb.entity.Familia familia; @Column(name="IdAlumno", nullable=false, unique=true, length=25) private String idAlumno; @Column(name="NumeroOficial", nullable=true, length=25) private String numeroOficial; @OneToOne(mappedBy="alumno", targetEntity=mx.dsm.interschool.catalogo.ejb.entity.Prospecto.class, fetch=FetchType.LAZY) @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.LOCK}) @org.hibernate.annotations.LazyToOne(value=org.hibernate.annotations.LazyToOneOption.NO_PROXY) private mx.dsm.interschool.catalogo.ejb.entity.Prospecto prospecto; @RequiredStringValidator(message = "Introduce IdAlumno", key = "i18n.key", shortCircuit = true, trim = true) public void setIdAlumno(String value) { this.idAlumno = value.toUpperCase(); } public String getIdAlumno() { return idAlumno; } public void setNumeroOficial(String value) { this.numeroOficial = value.toUpperCase(); } public String getNumeroOficial() { return numeroOficial; } public void setProspecto(mx.dsm.interschool.catalogo.ejb.entity.Prospecto value) { this.prospecto = value; } public mx.dsm.interschool.catalogo.ejb.entity.Prospecto getProspecto() { return prospecto; } public void setFamilia(mx.dsm.interschool.catalogo.ejb.entity.Familia value) { this.familia = value; } public mx.dsm.interschool.catalogo.ejb.entity.Familia getFamilia() { return familia; } public String toString() { return super.toString(); } public List getListaCargos() { return ListaCargos; } public void setListaCargos(List Cargos) { this.ListaCargos = Cargos; } public JRBeanCollectionDataSource getListaCargosDS(){ this.ListaCargosDS=new JRBeanCollectionDataSource(ListaCargos); return this.ListaCargosDS; } public List getListaPagos() { return ListaPagos; } public void setListaPagos(List Pagos) { this.ListaPagos = Pagos; } public JRDataSource getListaPagosDS(){ ListaPagosDS=new JRBeanCollectionDataSource(ListaPagos); return ListaPagosDS; }
Código:
el error que recibo es:<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="0"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> <defaultValueExpression><![CDATA["/home/alvaro/Documentos/NuevoInterSchool/Interschool/ISFinanzas/web/WEB-INF/reportes/estadoDeCuenta/"]]></defaultValueExpression> </parameter> <queryString> <![CDATA[]]> </queryString> <field name="nombreCompleto" class="java.lang.String"> <fieldDescription><![CDATA[nombreCompleto]]></fieldDescription> </field> <field name="idPersona" class="java.lang.Long"> <fieldDescription><![CDATA[idPersona]]></fieldDescription> </field> <field name="idAlumno" class="java.lang.String"> <fieldDescription><![CDATA[idAlumno]]></fieldDescription> </field> <field name="ListaCargosDS" class="net.sf.jasperreports.engine.JRDataSource"> <fieldDescription><![CDATA[ListaCargosDS]]></fieldDescription> </field> <field name="ListaPagosDS" class="net.sf.jasperreports.engine.JRDataSource"> <fieldDescription><![CDATA[ListaPagosDS]]></fieldDescription> </field> <background> <band splitType="Stretch"/> </background> <title> <band splitType="Stretch"/> </title> <pageHeader> <band splitType="Stretch"/> </pageHeader> <columnHeader> <band splitType="Stretch"/> </columnHeader> <detail> <band height="372" splitType="Stretch"> <staticText> <reportElement x="325" y="0" width="153" height="20"/> <textElement> <font size="15" isBold="true"/> </textElement> <text><![CDATA[Estado De Cuenta]]></text> </staticText> <textField> <reportElement x="0" y="21" width="325" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA["Alumno: "+$F{nombreCompleto}]]></textFieldExpression> </textField> <subreport> <reportElement x="0" y="48" width="802" height="100"/> <dataSourceExpression><![CDATA[$F{ListaCargosDS}]]></dataSourceExpression> <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "estadoDeCuentaCargos.jasper"]]></subreportExpression> </subreport> <subreport> <reportElement stretchType="RelativeToTallestObject" x="0" y="268" width="802" height="100"/> <dataSourceExpression><![CDATA[$F{ListaPagosDS}]]></dataSourceExpression> <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "estadoDeCuentaPagos.jasper"]]></subreportExpression> </subreport> </band> </detail> <columnFooter> <band splitType="Stretch"/> </columnFooter> <pageFooter> <band splitType="Stretch"/> </pageFooter> <summary> <band height="27" splitType="Stretch"/> </summary> </jasperReport>
Código:
GRAVE: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : ListaCargosDS Caused by: java.lang.NoSuchMethodException: Unknown property 'ListaCargosDS' on class 'class mx.dsm.interschool.catalogo.ejb.entity.Alumno'
o alguna alternativa para mprimir un reporte como el que me interesa gracias