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 }
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>
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!