【问题标题】:pass list in Java Beans List in Jasper ReportJasper Report 中的 Java Beans 列表中的传递列表
【发布时间】:2015-04-08 10:33:47
【问题描述】:

我正在使用带有 Servlet 的 Jasper Report。 Team Bean 的样子

private int tid;
private String title;
private List<Member> members;
//getter and setter

成员 bean 的样子

private int id;
private String name;
//getter and setter

在报表Servlet中,

 List<Team> teams = service.getTeams();
 Map parameters = new HashMap();
 JasperPrint jasperPrint = null;
 jasperPrint  = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(teams));

在 new JRBeanCollectionDataSource(teams) 中添加团队时,如何在 Jasper 报告中显示?因为它包含List中的List。

我需要子报告来解决这个问题吗?

或者我可以在没有子报告的情况下解决这个问题吗?

【问题讨论】:

    标签: servlets jasper-reports javabeans


    【解决方案1】:

    有两种方法可以做到这一点:

    带有子报表

    您确实可以通过使用子报表来解决这个问题。为此,您需要添加一个子报表并将其数据源表达式设置为new JRBeanCollectionDataSource($F{members})。然后,Member bean 的字段将可用作子报告中的字段(例如 $F{name})。

    带有列表组件

    您也可以在不使用子报表的情况下使用列表组件来解决此问题。这可以从 iReport 的调色板中获得,或者您可以复制下面的示例。这需要添加到您报告的详细信息区域中。

    列表组件有一个类似于报表的数据源表达式,您应该将其设置为new JRBeanCollectionDataSource($F{members}),并有一个listContents 元素,其行为类似于子报表的详细信息带;对于数据源中的每个成员,其中的元素将重复一次。

    列表组件需要在您的报表中添加一个子数据集,但这将由 iReport 自动添加,或者您可以轻松添加一个空的:&lt;subDataset name="dataset1"/&gt;

    <componentElement>
        <reportElement x="0" y="0" width="555" height="20"/>
            <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
            <datasetRun subDataset="dataset1">
                <dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($F{members})]]></dataSourceExpression>
            </datasetRun>
            <jr:listContents height="20" width="555">
                <textField>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                </textField>
            </jr:listContents>
        </jr:list>
    </componentElement>
    

    有关列表组件的更多信息,请点击此处:http://jasperreports.sourceforge.net/sample.reference/list/index.html

    【讨论】:

    • 我应该在哪里添加这个新的 JRBeanCollectionDataSource($F{members})
    • 您应该将其添加为子报表或列表组件的数据源表达式,具体取决于您采用的方法。
    • 当您需要同一报表模板的多个图表时,它将如何工作?检查这个stackoverflow.com/questions/39465301/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多