Если я неправильно прочитал документацию, мне нужно использовать JasperFillManager.fillReport для заполнения отчета Jasper. Переменные поля обозначаются как: $F{myVarName}
Например. Для этого примера у меня есть 3 <textField> узла в моем jrxml.
каждое текстовое поле содержит такой узел <textFieldExpression>:
<textFieldExpression class = "java.lang.String"><![CDATA[$F{param1}]]></textFieldExpression>
Я создал сервис, который может генерировать PDF-файлы в формате Base64, которые я могу внедрить туда, где мне это нужно. Вот отрывок
PdfTemplate template = templateRepo.findByTemplateId(templateId)
JasperReport jasperReport = JasperCompileManager.compileReport(new ByteArrayInputStream(template.getTemplateXml().getBytes()))
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters)
//JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource) //Also tried this.
Параметры выглядят следующим образом:
Map<String, Object> parameters = new HashMap<>();
parameters.put("param1", "Value of param1");
parameters.put("param2", "Value of param2");
parameters.put("param3", "Value of param3");
//Where param1-3 correspond with $F{param1-3}
Когда отчет создается, я вижу только нули.
то есть:
Параметр 1: ноль
Параметр 2: ноль
Параметр 3: ноль
Любая помощь в получении значений этих параметров для включения в отчет будет оценена по достоинству.
Справочные примечания:





В Jasper Reports $F{} обозначает поле, а не параметр. Измените выражение лица на $P{}
Также убедитесь, что параметр определен в JRXML.
Итак, вы textFieldExpression должны быть такими, как показано ниже.
<textFieldExpression class = "java.lang.String"><![CDATA[$P{param1}]]></textFieldExpression>
Преобразование в $P и определение всех параметров сверху сработало. Похоже, Джаспер настаивает на получении полей через JRResultSetDataSource, который вы создаете из ResultSet. Гораздо проще преобразовать его в параметры. Еще раз спасибо.
@BenFourie Существует множество источников данных, которые вы можете использовать, кроме JRResultSetDataSource. Пожалуйста, взгляните на jasperreports.sourceforge.net/sample.reference/datasource.
Спасибо. Буду играть с $P. Это устаревшие отчеты, которые мы повторно используем в новой системе, поэтому в их полях указано значение $F.