java birt project_Eclipse BIRT问题解决汇总(不断更新)

1.复合JavaBean数据源

1.1说明

在使用Eclipse BIRT进行报表开发时,会遇到使用复合型的JavaBean作为数据源的情况,例如Contact对象有一个Address类型的对应address,而Address对象又具有两个属性,分别为addressId和addressName,在此种情况下应该使用Eclipse BIRT提供的“Script Data Source”进行数据源。如下将通过实例展现在Eclipse BIRT中如何使用复合JavaBean作为数据源。

所用环境说明:

lIDE环境:birt-report-designer-all-in-one-2_2_1_1;、

lTomcat:5.5.27;

lEclipse BIRT版本:2.2.1

lbirt-runtime-2_2_1_1。

1.2开发实例

1.2.1在Java工程中创建复合JavaBean类Contact.java

在集成了BIRT的Eclipse中建立Java工程:birtJavaProject,并建立amigo.report包,并在该包下建立复合JavaBean的类:Contact.java,该类的代码如下所示:

4f1150b881333f12a311ae9ef34da474.pngpackageamigo.report;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassContact9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateString firstName;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateString lastName;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateString phoneNum;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateAddress address;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngpublicContact(

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png         String firstName, String lastName,

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif         String phoneNum, Address address)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngthis.firstName=firstName;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngthis.lastName=lastName;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngthis.phoneNum=phoneNum;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngthis.address=address;

d18c02628675d0a2c816449d98bda930.png

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png//省略getter/setter方法d18c02628675d0a2c816449d98bda930.png8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

1.2.2在Java工程创建复合JavaBean的关联JavaBean类Address.java

接下来在amigo.report包下建立Contact类关联的JavaBean类,代码如下所示:

4f1150b881333f12a311ae9ef34da474.pngpackageamigo.report;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassAddress9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateString addressId;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateString addressName;

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicAddress(String addressId, String addressName)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngthis.addressId=addressId;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngthis.addressName=addressName;

d18c02628675d0a2c816449d98bda930.png

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png//省略getter/setter方法d18c02628675d0a2c816449d98bda930.png8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

1.2.3在Java工程中创建数据工厂类ContactListFactory.java

在Java工程中还需要创建制造数据的工程类:ContactListFactory.java,该类的代码如下所示:

4f1150b881333f12a311ae9ef34da474.pngpackageamigo.report;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif/** *//**d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png * 数据制造工厂类.

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png *@authorAmigoXie(xieingxing1121@126.com)

d18c02628675d0a2c816449d98bda930.png

8f1ba5b45633e9678d1db480c16cae3f.png*/4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassContactListFactory9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicContact[] createContactList()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        Contact[] c=newContact[10];

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        Address address1=newAddress("1","address1");

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        Address address2=newAddress("2","address2");

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        Address address3=newAddress("3","address3");

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        Address address4=newAddress("4","address4");

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[0]=newContact("stavros","kounis","2310886269", address1);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[1]=newContact("dimitris","kounis","2310888270", address2);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[2]=newContact("dimitris","adamos","2310998417", address3);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[3]=newContact("nikos","koufotolis","2321013770", address4);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[4]=newContact("谢","星星","1399998383", address1);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[5]=newContact("阿","蜜果","13535353", address1);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[6]=newContact("test0","test00","1388996969", address1);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[7]=newContact("test1","test11","33333", address3);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[8]=newContact("test2","test22","44444", address2);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        c[9]=newContact("test3","test33","66666", address3);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngreturnc;

d18c02628675d0a2c816449d98bda930.png

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

截至此步,Java源码已经编写完毕,余下的工作是做报表编程。

1.2.4创建报表工程

在开发环境中选择“New”-> “Project”,如下所示:

c50c71a60b88e374ce70b0d5e6356769.png

在弹出对话框选择“Bussiness Intelligence…” -> “Report Project”,如下图所示:

cfb9912f31c23dfe6c7aafd306179684.bmp

而后点击“Next  >”,在弹出对话框中输入报表工程的名称“birtreport”后,点击“Finish”按钮完成报表工程的创建。

1.2.5创建报表

选择报表工程“birtreport”后点击右键,选择“New” –> “Report”,如下图所示:

01e96deff3dd1d3b93d44cd1ee8e43a5.bmp

在弹出窗口中输入报表的名称:helloBirt.rptdesign,点击“Finish”按钮完成报表的创建。

1.2.6创建Scripted数据源

使用JavaBean作为数据源,需要创建Script数据源。首先打开“Data Explorer”视图,(若该视图被关闭,请使用“Show View”打开)。在“Data Explorer”中选择“Data Sources”->“New Data Source”,如下图所示:

6d3685cd616f9ad18bf3003c7ca8ebd2.bmp

创建数据源的弹出窗口如下图所示:

21f96c59ba25a7bcf65c80e2df6a4c1d.bmp

在上述窗口中选择“Scripted Data Source”,在“Data Source Name”中输入数据源的名字,例如“Data Source”,点击“Finish”按钮完成数据源的创建。

1.2.7创建数据集

在“Data Explorer”视图中点击“Data Sets”->“New Data Set”,弹出窗口如下所示:

5df5ea1c4ab156d21f080a6bbe678041.bmp

在“Data Set Name”中输入数据集的名称,例如“Data Set”,在“Data Source”中选择刚才创建的Scripted数据源,而后点击“Next >”按钮,输入列名和显示名称等信息,窗口如下所示:

3470e49173fbbf9e955dbd60a40fe729.bmp

1.2.8编写数据访问脚本

打开“helloBirt.rptdesign”,切换到“Script”,在“Data Explorer”视图中选择刚才创建的数据集,open对应的脚本如下所示:

count = 0;

cf = new Packages.amigo.report.ContactListFactory();

c = cf.createContactList();

对应图形如下所示:

51deda9e644a919eb465edb123e53025.bmp

在“Script”的下拉框中选择“fetch”,对应的脚本如下所示:

if (count <= c.length - 1){

row["firstName"] = c[count].getFirstName();

row["lastName"] = c[count].getLastName();

row["phoneNum"] = c[count].getPhoneNum();

row["addressId"] = c[count].getAddress().getAddressId();

row["addressName"] = c[count].getAddress().getAddressName();

count ++;

return true;

}

1.2.9设计报表视图

视图中选择layout,简单的将我们建立的data set 拖到报表视图中即可,完成这步以后可以在preview中查看预览效果了。

1.2.10部署与浏览

将birt-runtime-2_2_1_1目录下的WebViewerExample工程拷贝到Tomcat的webapps下面,并将helloBirt.rptdesign报表文件拷贝到Tomcat根目录/webapps/WebViewerExample工程下。

接着在:Tomcat根目录/webapps/WebViewerExample/WEB-INF目录下建立classes子目录,存放Java工程中的三个类文件对应的class文件,将birtJavaProject/bin下的amigo目录整个拷贝到Tomcat根目录/webapps/WebViewerExample/WEB-INF/classes目录,完成报表文件的部署。

访问地址为:

在浏览器的运行效果图如下所示:

60eff04c0ec82172528ea6ca326856d4.bmp

2.对JavaBean数据源的数据进行分组

2.1说明

在复合JavaBean作为数据源的实例中,展示了如何进行复合JavaBean数据的展示,但是在某些情况下,需要对JavaBean进行分组显示,本实例将展示如何对JavaBean数据源进行分组显示。

2.2开发实例

2.2.1创建报表

在报表工程中创建报表groupByReport.rptdesign,创建方式与上例一样。

2.2.2创建数据源和数据集

因为该实例的数据源和数据集与上例相同,只需要在“Data Explorer”视图中将数据源和数据集拷贝到本实例即可,编写的数据访问脚本和设计的报表也与上例一样。

2.2.3对数据进行分组

接下来将向读者展示如何按照addressId对数据进行分组,首先在“Layout”中选择table后,点击右键,选择“Insert Group”-> “Above”,如下所示:

弹出的新建分组的窗口如下所示,在窗口中输入分组的名称,例如:addressIdGroup,在“Group on”中选择“addressId”,在“Interval”中选择“Interval”,在“Range”中输入1,如下图所示:

12f5b3434029d6207f0c43afaf8c95ff.bmp

在上图中点击“OK”按钮完成分组的创建。

2.2.4部署与浏览

部署的方法与上例相似,访问地址为:

运行效果如下图所示:

5d6f3b22bb1f7febd972ae21f6d46d9d.bmp

3.将BIRT集成到现有Web项目中

3.1说明

在上面的实例中,将报表和相关的类文件放在BIRT对应的Web项目WebViewerExample中来进行报表的查看和浏览,但是在实际的开发过程中,已经有Web项目,将报表的部分部署到WebViewerExample项目,而其它的部分部署到另一个Web项目,显然不太合适,本实例讲解如何将BIRT集成到现有的Web项目中,并进行报表的查看。

参考文章:http://blog.csdn.net/bjd14/archive/2006/12/25/1458947.aspx

3.2集成实例

3.2.1新建项目的Web工程

在MyEclipse新建一个Web Project,名为reportintegration,将上例中的amigo.report包以及其下的所有三个类(Contact.java、Address.java和ContactListFactory.java)拷贝到src目录下。并将helloBirt.rptdesign和groupByReport.rptdesign两个报表文件拷贝到WebRoot目录下。

3.2.2拷贝BIRT的Web项目WebViewerExample的文件

打开Tomcat下的WebViewerExample项目,其目录结构如下图所示:

f9975d71228129fbe5ef65e6ebd0c5ab.bmp

将该目录下的两个子目录report和webcontent拷贝到工程的WebRoot目录下。

接下来进入WebViewerExample"WEB-INF目录,目录结构如下所示:

11c74983957a07807a0d1d33d81dc717.bmp

将lib、platform和tlds三个子目录拷贝到Web工程的WebRoot"WEB-INF目录,并拷贝server-config.wsdd、viewer.properties和web.xml三个文件。到此所有文件都拷贝完毕。Web工程的结构如下图所示:

caf63dff2c6bbaf3f28ad674688427ed.bmp

lib目录的结构如下图所示:

e8a572de26ec63a43c397f4fec895c23.bmp

3.2.3部署与浏览

部署reportintegration到Tomcat下,启动成功后,访问路径类似如下所示:

运行效果与上例一样,不再赘述。

3.2.4访问参数说明

在访问时,路径实例如下所示:

其中”__report”表示访问的报表文件的路径,若将groupByReport.rptdesign报表文件拷贝到WebRoot/report目录下,则访问路径变成:

其它访问参数的说明如下所示:

选项

说明

__format

报表输出格式:html或pdf,缺省是html。对于frameset不起作用。

__isnull

指明一个参数是null,常用于字符串类型。如果提供参数且值为空: - 对于日期和数字类型,BIRT会将它们当作null处理。 - 对于字符串,BIRT会将它作为空字符串。因此,为了说明某个字符串是null,通常写为:__isnull=参数。

__locale

本地化选项,缺省是jvm的locale。

__report

报表设计文件路径。

报表参数

报表参数参数值对,形式:参数名=参数值。对于frameset,直接在地址栏中输入参数名=参数值后回车,不会影响报表结果。虽然,此时选择"运行报表"时,弹出的参数值已经改变。

posted on 2009-05-03 12:11 阿蜜果 阅读(14247) 评论(11)  编辑  收藏 所属分类: Eclipse BIRT

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值