JasperReports字段的自定义类

jag*_*ter 7 jasper-reports pojo

我想创建一个包含自定义类的报告,如下所示:

public class Class1 {
  String cl1_f1;
  String cl1_f2;
}

public class Class2 {
   String cl2_f1;
   String cl2_f2;
   Class1 cl1_ob1;
}
Run Code Online (Sandbox Code Playgroud)

现在我通过字段和JRBeanCollectionDataSource在报告中传递Class2.

<subDataset name="myitems">
    <field name="cl2_f1" class="java.lang.String"/>
    <field name="cl2_f2" class="java.lang.String"/>
    **<field name="cl1_ob1" class="Class2"/>**  
</subDataset>
Run Code Online (Sandbox Code Playgroud)

对于第三个参数,我想提一下它的一个字段.例如:cl1_ob1.cl1_f1.

我怎么能做到这一点?

bch*_*tty 13

在Jasper报告设计中,该字段将定义如下:

<field name="cl1_ob1" class="Class1">
   <fieldDescription><![CDATA[cl1_ob1]]></fieldDescription>
</field>
Run Code Online (Sandbox Code Playgroud)

并且可以通过调用getter方法(如果有)来访问Class1的2个变量,或者可以直接使用该变量,具体取决于它的访问权限.例如,$ F {cl1_ob1} .getCl1_f1()可以用作文本字段表达式,如下所示:

<textField>
   <reportElement x="36" y="26" width="235" height="20"/>
   <textElement textAlignment="Center" verticalAlignment="Middle"/>
   <textFieldExpression><![CDATA[$F{cl1_ob1}.getCl1_f1()]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)

  • @GirishK 很好的回应和评论,但我对您提供完整路径的确切含义感到有些困惑。我在字段中提供了完整的包名称和完整的文件路径。两者似乎都不起作用。我仍然收到 ClassNotFoundException。我试过:FULLY.QUALIFIED.PACKAGE.NAME.class,C:/full-file-system/path/to/file/myclass.java。我什至尝试将 java 类直接导入我的 Jasper 工作区,并且只使用 myclass.java、myclass 和 ./myclass。这些似乎都不起作用。澄清将不胜感激。 (3认同)