【问题标题】:Custom Class for JasperReports fieldJasperReports 字段的自定义类
【发布时间】:2012-01-17 19:50:49
【问题描述】:

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

public class Class1 {
  String cl1_f1;
  String cl1_f2;
}

public class Class2 {
   String cl2_f1;
   String cl2_f2;
   Class1 cl1_ob1;
}

现在我通过字段和 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>

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

我怎样才能做到这一点?

【问题讨论】:

    标签: jasper-reports pojo


    【解决方案1】:

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

    <field name="cl1_ob1" class="Class1">
       <fieldDescription><![CDATA[cl1_ob1]]></fieldDescription>
    </field>
    

    Class1的2个变量可以通过调用getter方法访问(如果有的话),也可以直接使用变量,取决于它的访问权限。例如,$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>
    

    【讨论】:

    • 天哪!棒极了!!多谢兄弟。它没有任何问题!
    • @bchetty 我得到一个 java.lang.ClassNotFoundException:Will not load classes from default package (Class1)
    • @JohnB for java.lang.ClassNotFoundException 提供完整路径。它对我来说非常有用。谢谢 bchetty。
    • @JohnB 它适用于一个对象,但是如果我们想传递一个对象列表,那么我们如何编写代码?
    • @GirishK 很好的响应和 cmets,但我对你提供完整路径的确切含义有点困惑。我在字段中提供了完整的包名称和完整的文件路径。两者似乎都不起作用。我仍然收到 ClassNotFoundException。我试过:FULLY.QUALIFIED.PACKAGE.NAME.class, C:/full-file-system/path/to/file/myclass.java。我什至尝试将 java 类直接导入到我的 Jasper 工作区中,并且只使用 myclass.java、myclass 和 ./myclass。这些似乎都不起作用。澄清将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2015-07-04
    • 2018-11-03
    • 2015-02-26
    • 2018-09-12
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多