У меня есть объект данных, который выглядит следующим образом:
@Data
public class DataResource {
private String data;
private Column[] columns;
}
@Data
public class Column{
private String header;
private float value;
}
То, что я хотел бы сделать, - это создать таблицу, в которой содержится динамическое число столбцов на основе данных столбцов в моем DataResource.
Пример: если столбцы имеют 3 элемента, то моя таблица будет создана с 4 столбцами: первый столбец будет содержать data
в DataResource, второй столбец будет содержать columns[0].value
, третий столбец будет содержать columns[1].value
и т. Д.
Я использую JRBeanCollectionDataSource , чтобы создать источник данных для моей таблицы:
List<DataResource> myData = makeData();
JRBeanCollectionDataSource tableDataSource = new JRBeanCollectionDataSource(myData);
Map<String, Object> localParameters = new HashMap<>();
localParameters.put("tableDataSource", tableDataSource);
JasperPrint fillReport = JasperFillManager.fillReport(jasperReport, localParameters,new JREmptyDataSource());
JasperExportManager.exportReportToPdfStream(fillReport, output);
И затем я настраиваю tableDataSource как источник данных для моей таблицы. Я могу отобразить содержимое для моего первого столбца «данные» в таблице, используя очень простое выражение $ F {data} , но все еще застреваю при создании динамического столбца для столбцов в DataResource.
Может кто-нибудь дать мне подсказку?