除非我读错了文档,否则我需要使用 JasperFillManager.fillReport 来填充 jasper 报告。字段变量记为: $F{myVarName}
例如。对于这个例子,我的 jrxml 中有 3 个
<textField>
节点
每个文本字段都包含一个 <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>