java - 如何在JasperReports中获取列表的第一个元素?

标签 java jasper-reports

我有一个带有嵌套对象列表的对象。我只想获取列表的第一个元素并显示它的一个属性。

示例:

public class Person {
    List<Phone> phones;
}

public class Phone {
    String type;
    String number;
}

这里我只想获取人的第一部电话(java中的phones.get(0)),并显示phone.numer属性。

我开始如下,它有效,但显示任何电话号码:

<field name="phones" class="java.util.List"/>
<jr:list printOrder="Vertical">
    <datasetRun subDataset="Dataset1">
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{phones})]]></dataSourceExpression>
    </datasetRun>
    <jr:listContents>
        <textField>
            <textFieldExpression><![CDATA[$F{number}]]></textFieldExpression>
        </textField>
    </jr:listContents>
</jr:list>

我还尝试了以下方法:

<field name="phones" class="java.util.List" />
<field name="phoneFirst" class="my.package.Phone">
    <fieldDescription><![CDATA[$F{phones}.get(0)]]></fieldDescription>
</field>
<field name="phoneFirstNumber" class="java.lang.String">
    <fieldDescription><![CDATA[$F{phoneFirst}.getNumber()]]></fieldDescription>
</field>

结果: net.sf.jasperreports.engine.JRException:从 bean 检索字段值时出错:$F{phones}.get(0)

那么,我如何告诉 JasperReports 仅获取集合的第一个元素?

最佳答案

我会用 Java 来做这个:

public class Person {
    List<Phone> phones;
    ...
    public Phone getFirstPhone() { 
        if(this.phones != null) {
            return this.phones.get(0);
        }
        return null;
    }
    ...
}

然后在 JRXML 中添加如下内容:

<field name="firstPhoneNumber" class="java.lang.String">
    <fieldDescription><![CDATA[$F{firstPhone}.getNumber()]</fieldDescription>
</field>

关于java - 如何在JasperReports中获取列表的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899122/

相关文章:

java - 如何在 tomcat 上使用 LDAP 设置 CAS .. 没有错误

java - solr boost函数的目的

java - 需要帮助以了解以下代码为何不起作用

java - Jasper 报告中无序 HTML 列表前的空行

jasper-reports - 如何在 "single textfield"中的 jasper 报告 5.5.1 中显示 y 的页面 x 其给出的对齐问题?

java - Swing:有没有办法区分用户引起的 ItemEvent 和应用程序引起的事件?

java - 单击鼠标后绘制椭圆

java - 如何获取服务器上某些子报表的ReportDesign类以进行基于scriptlet的修改?

java - 使用 Java 和 Jasper 生成 Excel 文件

java - 碧 Jade 报告 : How to call the report in jsp page