Birt报表现在用的越来越广,使用数据库作为数据源居多,但POJO数据源有时候也是需要的,本文将以一个简单例子来讲解如何在BIRT中使用POJO数据源。
1、建立一个java project,作为pojo待用,本例中有两个java文件:
Contact.java
package com.ection.report.pojo;
public class Contact {
private String firstName;
private String lastName;
private String phoneNum;
public Contact(String firstName, String lastName, String phoneNum){
this.firstName = firstName;
this.lastName = lastName;
this.phoneNum = phoneNum;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
}
ContactListFactory.java
package com.ection.report.pojo;
public class ContactListFactory {
public Contact[] createContactList(){
Contact[] c = new Contact[4];
c[0] = new Contact("stavros", "kounis", "2310886269");
c[1] = new Contact("dimitris", "kounis", "2310888270");
c[2] = new Contact("dimitris", "adamos", "2310998417");
c[3] = new Contact("nikos", "koufotolis", "2321013770");
return c;
}
}
2、建立Report Project,在其中新建report,然后在Data Explorer中新建Data Sources,数据源类型选择scripted data source,如下图所示:
[img][/img]
3、新建Data Sets,并设置列名、数据类型、显示名称,如图所示:
4、编写数据访问脚本
在Data Sets中选择我们建立的数据集,然后在报表编辑视图选择Script,分别编辑open和fetch,如图所示:
open的脚本:
count = 0;
cf = new Packages.com.ection.report.pojo.ContactListFactory();
c = cf.createContactList();
fetch的脚本:
if (count < c.length-1){
count ++;
row["FirstName"] = c[count].getFirstName();
row["LastName"] = c[count].getLastName();
row["PhoneNum"] = c[count].getPhoneNum();
return true;
}
return false;
5、设计视图,在视图中选择layout,简单的将我们建立的data set 拖到报表视图中即可,完成这步以后可以在preview中查看预览效果了
6、部署,我是用的是bir2.3.0,和其他部署一样,将birt-runtime-2_3_0.zip中的WebViewerExample目录拷贝到webapps目录下(我用的是tomcat5.5),将我们的报表文件 xxx.rptdesign拷贝到WebViewerExample目录下。但是目前还不能使用,必须在WebViewerExample目录下的WEB-INF目录中新建classes目录,并且将java project中的class带路径拷贝到classes目录中,如图:
到这步,就算ok了,启动tomcat,即可访问,地址类似于:
http://localhost:8080/birtxx/frameset?__report=test01.rptdesign