无法使用从脚本数据集中导致的行数据

时间:2014-03-30 18:57:06

标签: java report birt

使用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脚本中使用了行?我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

嗯,conctractVersion是什么? 它显然没有在open事件中初始化。 这应该是myPojo.contractVersion还是myPojo.getContractVersion()

另一点:DS是否将列“columnTitle”绑定到布局?

您还应该将报告作为HTML或预览器运行,以检查脚本错误。 不幸的是,在以PDF格式生成报告时,这些会被忽略:

答案 1 :(得分:0)

问题是两次使用蜡染(两个不同的版本),一个依赖BIRT,另一个依赖于DOCX4J。

这个问题很难识别,因为没有日志输出呈现PDF文件。

渲染HTML我可以看到一条错误消息,我可以调查并发现问题。

对于我的情况,我可以从maven POM中删除DocX4j。