我正在使用iReport和JasperReports,当我开始创建报表时,默认情况下,iReport使用Groovy,但是我需要更改为Java(对我的工作有所限制),我使用Groovy制作了报表,并且工作正常,但是当我更改为Java语言,这很麻烦,因为我在报告中使用了一个类(来自某个类的java的字段),所以错误是:myfield cannot be resolved or is not a field.

我用来做报告的类是:

public final class GrupoEstadistico implements Serializable {

    private Estadistico ccDocumento;
    private Estadistico ccNombres;

    //another class that is an attribute of type Estadistico

    private Date periodo;
    private String tipoEntidad;

    //and another primitives atributes: strings, int

    //getters and setters
}


这是Estadistico类别:

public final class Estadistico implements Serializable, Comparable<Estadistico> {

    private String nombreEntidad;
    private int codigo;
    private int numeroConsultas = 0;

    //and aother primitives atributes: strings, int
    //getters and setters
}


我在报告中像字段一样使用GrupoEstadistico类的所有属性。

我使用表达式来获取每个Estadistico的值,例如:

$F{ccDocumento}.numeroConsultasanyone


尝试编译报告时遇到的麻烦是:

numeroConsultas cannot be resolved  or is not a field.


我了解发生的事情是:


iReport找不到我的班级属性,因此
iRreport无法理解我使用的表达方式。


这是我试图解决我的问题的方法:


添加一个带有iReport类路径所需类的jar文件。
在报告的属性中添加如下输入:reporte.model.GruoEstadistico
我已经编辑了xml并添加了标记scriptlet:


 <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="ListaConsultaEstadistico" pageWidth="895" pageHeight="595"
 orientation="Landscape" columnWidth="855" leftMargin="20" rightMargin="20"
 topMargin="20" bottomMargin="20"
 scriptletClass="reporte.model.GrupoEstadistico"
 uuid="b0990d7b-fade-4200-a2ef-fb0416f5a9c2">


更新:

我通过以下方式从Java代码调用报告:

/**Create a List of GrupoEstadistico class. */

List<GrupoEstadistico> this.dataSource = new ArrayList<GrupoEstadistico>();

/**Fill my List....*/


JasperPrint jasperPrint= JasperFillManager.fillReport( reportPath,this.parametros,
                 new JRBeanCollectionDataSource( this.dataSource ));


dataSource是List<GrupoEstadistico>

但是仍然不起作用。

谁能帮我?

最佳答案

使用Java程序在ireport中发送对象。用您的实例和属性的名称定义一个字段。例如
假设您使用grupoEstadistico发送类实例,请在ireport中定义一个名称为“ grupoEstadistico.tipoEntidad”的字段。并拖动任意区域中的文本字段。
右键单击->编辑表达式->删除$ {field}->双击您的字段->单击应用
它将在* iReport *中添加您的属性。现在,如果您将文件下载为pdf格式,它将显示该实例中发送的数据。

10-06 13:47