使用BIRT进行测试我能够创建一个报告并以PDF格式呈现,但不幸的是我没有得到预期的结果。
对于我的DataSource,我创建了一个Scripted DataSource,并且不需要代码(据我所知,我可以看到文档来实现我想要做的事情)。
对于我的DataSet,我使用我的Scripted DataSource作为源创建了一个Scripted DataSet。在那里,我将脚本定义为open:
importPackage(Packages.org.springframework.context);
importPackage(Packages.org.springframework.web.context.support);
var sc = reportContext.getHttpServletRequest().getSession().getServletContext();
var spring = WebApplicationContextUtils.getWebApplicationContext(sc);
myPojo = spring.getBean("myDao").findById(params["pojoId"]);
用于获取的脚本如下:
if(myPojo != null){
row["title"] = myPojo.getTitle();
myPojo = null;
return true;
}
return false;
由于row
的人口将在运行时完成,我无法自动获取DataSet列,因此我使用以下配置创建了一个:name:columnTitle(因为这是名称)用于在获取代码中填充行对象)。
之后我编辑了报告的布局,并将列添加到我的布局中。
我能够确认spring.getBean("myDao").findById(params["pojoId"]);
已执行。但我呈现的报告没有显示标题。如果我在报表布局上双击我的列标签,我可以看到表达式为dataSetRow["columnTitle"]
是不是正确?即使我在我的fetch脚本中使用了行?我在这里缺少什么?
答案 0 :(得分:1)
嗯,conctractVersion
是什么?
它显然没有在open
事件中初始化。
这应该是myPojo.contractVersion
还是myPojo.getContractVersion()
?
另一点:DS是否将列“columnTitle”绑定到布局?
您还应该将报告作为HTML或预览器运行,以检查脚本错误。 不幸的是,在以PDF格式生成报告时,这些会被忽略:
答案 1 :(得分:0)
问题是两次使用蜡染(两个不同的版本),一个依赖BIRT,另一个依赖于DOCX4J。
这个问题很难识别,因为没有日志输出呈现PDF文件。
渲染HTML我可以看到一条错误消息,我可以调查并发现问题。
对于我的情况,我可以从maven POM中删除DocX4j。