我正在使用 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"/>
然后,像这样tutorial状态,并且由于我想维护一些预定义的参数,所以我从我的代码中调用了 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");
但是,当我生成报告时,这两个字段显示为空白,好像 DJ 库没有预先保存要插入值的位置。我没有收到任何其他错误或异常。
我已经尝试将 Jasper 库降级到所有旧版本,但也无济于事。
如果有人能告诉我我做错了什么,我将不胜感激。
提前致谢。
最佳答案
在 jrxml 中已经定义了一个参数只意味着在您的自定义表达式中您可以获得它的值
params.get("paramName")
无需事先注册 ( drb.addParameter(...) )
您始终可以创建自定义表达式列并在自定义表达式代码中放置断点,并在运行时检查参数映射的内容!
如果你在 DJ 之外使用参数,比如页眉或页脚文本,应该没有问题
关于templates - (Dynamic Jasper Reports) 从自定义 .jrxml 文件导入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471617/