Home > Java > javaTutorial > How to Display a JavaBean\'s List Property in a JasperReports Report?

How to Display a JavaBean\'s List Property in a JasperReports Report?

DDD
Release: 2024-11-29 22:52:11
Original
167 people have browsed it

How to Display a JavaBean's List Property in a JasperReports Report?

How to access data from a java.util.List in a JavaBean using JRBeanCollectionDataSource

This guide explains how to display data stored in a List property of a JavaBean using JRBeanCollectionDataSource in your reports.

The Problem:

Consider a JavaBean with a property that holds a java.util.List of values. How can we extract and display this list's data within the Detail band of a report?

The Solution:

To accomplish this, we can leverage two key techniques:

1. Using the _THIS Expression:
Within the field expression, utilize the _THIS expression to access the current instance of the JavaBean. This allows you to extract the java.util.List property from the bean.

2. List Component in the Detail Band:
Employ a List component in the Detail band. Bind its DataSourceExpression to a new JRBeanCollectionDataSource that wraps the java.util.List obtained using the _THIS expression. Then, within the list's contents, define a TextField to display the individual values from the list.

Example Code:

JavaBean:

public class BeanWithList {

    private List<String> cities;
    private Integer id;

    // public getters for bean properties

}
Copy after login

JRXML File:

<field name="id" class="java.lang.Integer"/>
<field name="cities" class="java.util.Collection"/>

<detail>
    <band height="20">
        <textField>
            <reportElement x="0" y="0" width="100" height="20"/>
            <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
        </textField>
        <componentElement>
            <reportElement x="100" y="0" width="400" height="20"/>
            <jr:list>
                <datasetRun subDataset="dataset1">
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{cities})]]></dataSourceExpression>
                </datasetRun>
                <jr:listContents height="20" width="400">
                    <textField>
                        <reportElement x="0" y="0" width="100" height="20"/>
                        <textFieldExpression><![CDATA[$F{city}]]></textFieldExpression>
                    </textField>
                </jr:listContents>
            </jr:list>
        </componentElement>
    </band>
</detail>
Copy after login

Result:

The report will display the ID of the JavaBean along with the list of cities stored in its cities property.

The above is the detailed content of How to Display a JavaBean\'s List Property in a JasperReports Report?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template