3

我正在使用 JasperReports(v.4.0.6) 和 DynamicJasperReports(v.4.0.1) 开发一个 Java 项目。我已经使用 Eclipse 的最新 iReport 插件生成了一个自定义 .jrxml。

在我的 .jrxml 报告中,我定义了两个参数,这些参数将由 Java 程序根据用户给出的一些输入来填充。

<parameter name="ReportTitle" class="java.lang.String"/>
<parameter name="DataFile" class="java.lang.String"/>

然后,正如本教程所述,由于我想维护几个预定义的参数,我从我的代码中调用setTemplate()方法。

String table_template = "report_templates/TableTemplate.jrxml";
Map<String, String> params; 
... 
DynamicReportBuilder drb = new DynamicReportBuilder();
drb.setTemplateFile(table_template, true, true, true, true);
DynamicReport dr = drb.build(); 

我将参数传递给模板,执行以下操作:

params.put("ReportTitle", "CustomTitle");
params.put("DataFile", "CustomSubtitle");

但是,当我生成 de 报告时,这两个字段显示为空白,好像 DJ 库没有预先保存插入值的位置。我没有收到任何其他错误或异常。

我尝试将 Jasper 库降级为旧版本,但也无济于事。

如果有人能给我一些关于我做错了什么的见解,我将不胜感激。

提前致谢。

4

1 回答 1

2

在 jrxml 中已经定义了一个参数仅意味着在您的自定义表达式中,您可以获得它的值

params.get("paramName")

未经事先注册(drb.addParameter(...)

您始终可以创建自定义表达式列并在自定义表达式代码中放置一个断点,并在运行时检查参数映射的内容!

如果您在 DJ 之外使用参数,例如页眉或页脚文本,应该没有问题

于 2012-07-13T21:10:16.710 回答