如何将数据绑定项添加到BIRT报告的母版页?

时间:2014-07-08 13:18:37

标签: birt

我有一份使用脚本数据源的BIRT报告。该报告有一个参数,它是XML文件的路径。 XML包含Java对象的表示。该对象被反序列化,并通过脚本化数据源提供给报告。

'开放'脚本:

importPackage(Packages.com.acme.atf.model.dao);
model = new Packages.com.acme.atf.model.dao.AtfObjects();

path = inputParams["ProtocolPath"];
try {
    var list = model.getProtocols(path);
    itr = list.iterator();
}catch(e){
    log(e);
}

'fetch'脚本:

try {
    if(itr.hasNext()){
        p = itr.next();
        row["ProtocolObject"] = p;
        row["ProductVersion"] = p.getProductVersion();
        row["ProductName_de"] = p.getProductName_de();
        row["ProductName_en"] = p.getProductName_en();
        // etc.
        return true;
    }
} catch(x) {
    log(x);
}
return false;

如果我只是在体内使用DataSet,那么我得到一个结果。创建报告。

如果我将数据绑定网格添加到母版页标题以显示ProductName字段,则报告未正确生成。如果删除母版页中的数据项,则会正确生成报告。

似乎首先创建母版页,这可能会阻止正文中的数据集正确生成。

我发错了吗?我可以将数据绑定项添加到母版页吗?

1 个答案:

答案 0 :(得分:0)

问题实际上与以下事实有关:如果您多次使用数据集,BIRT会开始缓存结果并使用序列化。我使用的POJO不是完全可序列化的(其中一个封闭的类),因此在反序列化时为null。这导致了这个问题。

我实际上得到了另一个问题的答案。见What might cause BIRT to lose an object reference between fetch and render?