2

私はiReportJasperReportsを使用しています。レポートを作成し始めたとき、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は、私が使用する表現を理解していません。

これは私が私の問題を解決しようとしたことです:

  1. iReportのクラスパスに必要なクラスを含む jar ファイルを追加します。
  2. reporte.model.GruoEstadisticoレポートのプロパティに次のようなインポートを追加します。

  3. そして、xmlを編集して、タグ スクリプトレットを追加します。

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

データソースは List<GrupoEstadistico>

しかし、まだ機能しません。

誰でも私を助けることができますか?

4

1 に答える 1

1

Java プログラムを使用して ireport でオブジェクトを送信します。インスタンスと属性の名前でフィールドを定義します。たとえば、grupoEstadistico を使用してクラス インスタンスを送信し、ireport で「grupoEstadistico.tipoEntidad」という名前のフィールドを定義するとします。テキストフィールドを任意のバンドにドラッグします。 右クリック -> 式の編集 -> ${field} の削除 -> フィールドをダブルクリック -> [適用] をクリックすると、 * iReport * に属性が追加されます。ファイルをpdf形式でダウンロードすると、このインスタンスで送信したデータが表示されます。

于 2013-10-02T11:07:53.417 に答える