I have a parameter whose expression class is a List. Inside that List is another list so the data looks something like this.
Class Bean{
String property1
St
There are multiple solutions to achieve what you need.
Create flat structure of your datasource, as example a List of Map, looping your Bean, BeanDetails example
ListUse subreport include a subreport spanning col4 to col6, setup field Bean in main report
and pass as datasource to the subreport
Create you own JRDataSource (I will not submit the whole class, but only some hints on how this can be done, creating a new class implementing JRDataSource)
JRDataSource myDatasource = new JRDataSource() {
//TODO: keep controll of you list of Beans, current Bean and current BeanDetails, using pointers.
@Override
public boolean next() throws JRException {
//TODO: Implement if there are still records, move to next Bean or BeanDetails
boolean existsRecords = false;
return existsRecords;
}
@Override
public Object getFieldValue(JRField field) throws JRException {
String name = field.getName();
//TODO: On the basis of your pointer, current Bean and current BeanDetails, return the value requested.
return null;
}
};
Make your choice and have fun!