Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BIRT 4.3新POJO数据源有问题_Java_Birt - Fatal编程技术网

Java BIRT 4.3新POJO数据源有问题

Java BIRT 4.3新POJO数据源有问题,java,birt,Java,Birt,我现在正在学习这个例子 我似乎无法让它正常工作。在定义新数据集(新Birt POJO数据集)的步骤中,我似乎找不到“POJO数据集类名”。匹配项小部件保持为空。我试着编辑rptdesign,而source选项卡尝试了各种变体(带/不带包名),但没有任何效果。有人成功地使用了BIRT的这一新功能吗?好吧,我的错。如果我们必须实现一个接口,而不是试图推断birt是如何读取自定义pojo数据集的,那么就更容易了 因此,在这个示例中,除了CustomerDataSet类之外,其他所有功能都按照所描述的那

我现在正在学习这个例子
我似乎无法让它正常工作。在定义新数据集(新Birt POJO数据集)的步骤中,我似乎找不到“POJO数据集类名”。匹配项小部件保持为空。我试着编辑rptdesign,而source选项卡尝试了各种变体(带/不带包名),但没有任何效果。有人成功地使用了BIRT的这一新功能吗?

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

因此,在这个示例中,除了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() {
}
}
import java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
导入java.util.Map;
公共类CustomerDataSet{
公共迭代器itr;
公共列表getCustomers(){
列出客户=新建ArrayList();
客户c=新客户(103);
c、 setCity(“City1”);
c、 setCountry(“Country1”);
c、 设定信用额度(100);
c、 集合名(“aName1”);
c、 设置状态(“状态1”);
加上(c);
c=新客户(104);
c、 setCity(“City2”);
c、 setCountry(“Country2”);
c、 设定信用额度(200);
c、 设定名称(“aName2”);
c、 设置状态(“aStat2”);
加上(c);
c=新客户(105);
c、 setCity(“City3”);
c、 setCountry(“Country3”);
c、 设定信用额度(300);
c、 设定名称(“aName3”);
c、 设置状态(“aStat3”);
加上(c);
返回客户;
}
打开公共空(对象对象、地图){
}
公共对象下一个(){
如果(itr==null)
itr=getCustomers().iterator();
if(itr.hasNext())
返回itr.next();
返回null;
}
公众假期结束(){
}
}

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

因此,在这个示例中,除了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() {
}
}
import java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
导入java.util.Map;
公共类CustomerDataSet{
公共迭代器itr;
公共列表getCustomers(){
列出客户=新建ArrayList();
客户c=新客户(103);
c、 setCity(“City1”);
c、 setCountry(“Country1”);
c、 设定信用额度(100);
c、 集合名(“aName1”);
c、 设置状态(“状态1”);
加上(c);
c=新客户(104);
c、 setCity(“City2”);
c、 setCountry(“Country2”);
c、 设定信用额度(200);
c、 设定名称(“aName2”);
c、 设置状态(“aStat2”);
加上(c);
c=新客户(105);
c、 setCity(“City3”);
c、 setCountry(“Country3”);
c、 设定信用额度(300);
c、 设定名称(“aName3”);
c、 设置状态(“aStat3”);
加上(c);
返回客户;
}
打开公共空(对象对象、地图){
}
公共对象下一个(){
如果(itr==null)
itr=getCustomers().iterator();
if(itr.hasNext())
返回itr.next();
返回null;
}
公众假期结束(){
}
}

感谢您发布解决方案。我认为迭代器应该是私有的,并在“open”方法中初始化,而不是在next()中初始化。@Francois Lacoursiere在我的例子中,我看不到数据源中的数据源类名。如果你遇到了这个问题,请帮助我。我一直在尝试推断,我已经推断了。您需要使用
public object next()
方法创建对象。它将通过此转换器。感谢您发布解决方案。我认为迭代器应该是私有的,并在“open”方法中初始化,而不是在next()中初始化。@Francois Lacoursiere在我的例子中,我看不到数据源中的数据源类名。如果你遇到了这个问题,请帮助我。我一直在尝试推断,我已经推断了。您需要使用
public object next()
方法创建对象。它通过这个转换器