填写 Jasper 报告但得到空值

问题描述 投票:0回答:1

除非我读错了文档,否则我需要使用 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:空

任何帮助将这些参数值提取到报告中的帮助都将不胜感激。

参考注释:

https://javadoc.io/static/net.sf.jasperreports/jasperreports/4.0.0/net/sf/jasperreports/engine/JasperFillManager.html

https://www.baeldung.com/spring-jasper

jasper-reports
1个回答
2
投票

在 Jasper Reports 中,

$F{}
代表字段,而不代表参数。把表情换成
$P{}

此外,请确保该参数已在 JRXML 中定义。

所以你

textFieldExpression
应该如下。

<textFieldExpression class="java.lang.String"><![CDATA[$P{param1}]]></textFieldExpression>
© www.soinside.com 2019 - 2024. All rights reserved.