我正在使用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格式,它将显示该实例中发送的数据。