1

我正在关注http://www.eclipse.org/birt/phoenix/project/notable4.3.php#jump_3上的示例, 但我似乎无法让它正常工作。在您定义新数据集(New Birt POJO 数据集)的步骤中,我似乎找不到“POJO 数据集类名称”。匹配的项目小部件保持为空。我尝试使用源选项卡编辑 rptdesign,尝试各种变体(带/不带包名称),但没有任何效果。有人在 BIRT 的这个新功能上取得了成功吗?

4

1 回答 1

6

好吧,我的错。如果我们必须实现一个接口而不是试图推断 birt 如何读取自定义 pojo 数据集,那会更容易。

因此,在http://www.eclipse.org/birt/phoenix/project/notable4.3.php#jump_3上的示例中,除了 CustomerDataSet 类之外,所有内容都按描述工作。这是对我有用的类 CustomerDataSet 的实现。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class CustomerDataSet {

public Iterator<Customer> itr;

public List<Customer> getCustomers() {
    List<Customer> customers = new ArrayList<Customer>();

    Customer c = new Customer(103);
    c.setCity("City1");
    c.setCountry("Country1");
    c.setCreditLimit(100);
    c.setName("aName1");
    c.setState("state1");
    customers.add(c);

    c = new Customer(104);
    c.setCity("City2");
    c.setCountry("Country2");
    c.setCreditLimit(200);
    c.setName("aName2");
    c.setState("aStat2");
    customers.add(c);

    c = new Customer(105);
    c.setCity("City3");
    c.setCountry("Country3");
    c.setCreditLimit(300);
    c.setName("aName3");
    c.setState("aStat3");
    customers.add(c);

    return customers;
}

public void open(Object obj, Map<String,Object> map) {
}

public Object next() {
    if (itr == null)
        itr = getCustomers().iterator();
    if (itr.hasNext())
        return itr.next();
    return null;
}

public void close() {
}
}
于 2013-09-09T21:48:08.647 回答