Java Can';t使用脚本化数据集生成的行数据
使用BIRT执行测试时,我能够创建一个报告并以PDF格式呈现,但不幸的是,我没有得到预期的结果 对于我的数据源,我创建了一个脚本化的数据源,其中不需要任何代码(就我所能看到的文档而言,我试图实现的目标) 对于我的数据集,我使用脚本数据源作为源创建脚本数据集。在这里,我定义了open的脚本,比如:Java Can';t使用脚本化数据集生成的行数据,java,report,birt,Java,Report,Birt,使用BIRT执行测试时,我能够创建一个报告并以PDF格式呈现,但不幸的是,我没有得到预期的结果 对于我的数据源,我创建了一个脚本化的数据源,其中不需要任何代码(就我所能看到的文档而言,我试图实现的目标) 对于我的数据集,我使用脚本数据源作为源创建脚本数据集。在这里,我定义了open的脚本,比如: importPackage(Packages.org.springframework.context); importPackage(Packages.org.springframework.web.c
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;
由于将在运行时填充行
,我无法自动获取数据集列,因此我创建了一个具有以下配置的列:name:columntTitle(因为这是用于在获取代码中填充行对象的名称)
之后,我编辑了报告的布局,并将列添加到布局中
我能够确认
spring.getBean(“myDao”).findById(params[“pojoId]”)代码>被执行。但是我的报告没有显示标题。如果我双击报表布局上的列标签,我可以看到表达式是dataSetRow[“columnTitle”]
对吗?甚至我在获取脚本中使用了row?我在这里遗漏了什么?那么,什么是conctractVersion
?
在open
事件中,它显然没有初始化。
这应该是myPojo.contractVersion
还是myPojo.getContractVersion()
另一点:具有列“columnTitle”的DS是否绑定到布局
您还应该以HTML格式或在预览器中运行报告,以检查脚本错误。
不幸的是,在以PDF格式生成报告时,这些都被默默地忽略了…问题在于使用了两次batik(两个不同的版本),一个依赖于BIRT,另一个依赖于DOCX4J
这个问题很难识别,因为没有呈现PDF文件的日志输出
呈现HTML时,我可以看到一条错误消息,我可以对此进行调查并找到问题
就我的情况而言,我可以从maven POM中删除DocX4j。很抱歉,错误的获取版本,我刚刚更正了它。我只是把它拖到布局上,应该够了吧?使用row
变量并将行的键(columntTitle
在本例中)声明为列输出时,fetch
的代码是否正确?您是否以HTML格式运行报表并查找以红色显示的Javascript错误?也许有必要创建一个报表变量来存储myPojo,并使用vars[“myPojo”]访问它在代码中,而不仅仅是myPojo.+1作为提示,在呈现PDF时隐藏异常