关于birt 报表结合 web项目,采用script数据源的问题
问题是关于birt报表结合web项目,采用script数据源的问题。因为我其中一个报表采用数据库的数据源时,在jsp页面上是显示正常的。所以我想我整合后的web项目配置上...
问题是关于birt 报表结合 web项目,采用script数据源的问题。因为我其中一个报表采用数据库的数据源时,在jsp页面上是显示正常的。所以我想我整合后的web项目配置上应该是没问题的。
关键是我采用script数据源时,我按照教程先写好服务类,然后在 datasets 那边写好脚本,调用写好的服务类之后,点击预览 报表,这是可以正常显示的。但是当我run报表时,报表一直出不来,但是也没有报错,就是感觉一直在加载,想当长一段时间后,控制台 报 java.lang.OutOfMemoryError: Java heap space 异常,这我没搞懂,不过我想应该是我的报表文件是放在web项目的webapp下的,项目没启动,所以找不到script脚本里写的类。但是为什么我预览时显示正常呢
然后就算启动项目,运行这个报表时,页面也是一直在加载,最后出错,还是上面那个异常。我试了网上的方法,把那些服务类打包好放在D:\software\eclipse\plugins\org.eclipse.birt.report.viewer_4.3.2.v201402141300\birt\WEB-INF\lib 之类的地方,可惜还是没用,求助啊啊啊。。。
其实这个问题我又解决了,但是我又遇到一个新的问题。想死的心都有了。。。
这个问题就是: 我上面提到过,我有些地方有一些html 与 javascript ,这些是在text标签里弄的 ,如下图。
这样,我在预览和嵌套进jsp页面时可以正常显示。如下图:
但是我打印出来之后,这些内容都没有了。如下图:
表现为这些应该有html元素的地方一片空白。。。附上我打印的url:
function expPDF() {
window.open("/reportWeb222/frameset?__report=preapply.rptdesign&sample=my+parameter&__masterpage=true&__format=pdf&_title='分组报表'");
}
这应该是最后一个问题了,谢谢您的关注。@yashiro_w 展开
关键是我采用script数据源时,我按照教程先写好服务类,然后在 datasets 那边写好脚本,调用写好的服务类之后,点击预览 报表,这是可以正常显示的。但是当我run报表时,报表一直出不来,但是也没有报错,就是感觉一直在加载,想当长一段时间后,控制台 报 java.lang.OutOfMemoryError: Java heap space 异常,这我没搞懂,不过我想应该是我的报表文件是放在web项目的webapp下的,项目没启动,所以找不到script脚本里写的类。但是为什么我预览时显示正常呢
然后就算启动项目,运行这个报表时,页面也是一直在加载,最后出错,还是上面那个异常。我试了网上的方法,把那些服务类打包好放在D:\software\eclipse\plugins\org.eclipse.birt.report.viewer_4.3.2.v201402141300\birt\WEB-INF\lib 之类的地方,可惜还是没用,求助啊啊啊。。。
其实这个问题我又解决了,但是我又遇到一个新的问题。想死的心都有了。。。
这个问题就是: 我上面提到过,我有些地方有一些html 与 javascript ,这些是在text标签里弄的 ,如下图。
这样,我在预览和嵌套进jsp页面时可以正常显示。如下图:
但是我打印出来之后,这些内容都没有了。如下图:
表现为这些应该有html元素的地方一片空白。。。附上我打印的url:
function expPDF() {
window.open("/reportWeb222/frameset?__report=preapply.rptdesign&sample=my+parameter&__masterpage=true&__format=pdf&_title='分组报表'");
}
这应该是最后一个问题了,谢谢您的关注。@yashiro_w 展开
1个回答
展开全部
我4月份刚开发完了一个BIRT项目。我也用的是BIRT 4.2,然后我有很多birt报表用的也是script datasource。
你用的什么服务器?我用的tomcat和jboss,两个都可以顺利跑在windows和linux环境,绝对没有java heap space。
1.首先你的服务类,就是从数据库读数据的java class绝对不应该放在WEB-INF\lib下面。你apps打包打得对吗?
2.至于你的页面跑不出来,我想问数据量多少?在sql里面跑那个query要用多久?
3.你留个邮箱我可以给你例子。
你用的什么服务器?我用的tomcat和jboss,两个都可以顺利跑在windows和linux环境,绝对没有java heap space。
1.首先你的服务类,就是从数据库读数据的java class绝对不应该放在WEB-INF\lib下面。你apps打包打得对吗?
2.至于你的页面跑不出来,我想问数据量多少?在sql里面跑那个query要用多久?
3.你留个邮箱我可以给你例子。
更多追问追答
追问
上面这个问题已经解决了,目前遇到一个新问题,还请指点。报表有些地方插入动态文本,里面是一些html的元素(比如input之类的)和一些javascript,然后我想在通过那些js获取到脚本数据源中定义的一些数据该怎么弄呢?谢谢
追答
按照你的说法,你的报表里面插入了动态文本和一些js,想显示数据源里面的值。正常的话,在eclipse的birt那个配置窗口里面,你可以看到左下角窗口里面有个数据源datasource,找到映射,然后拖动到.rptdesign文件里就行。我记得.rptdesign文件里面就显示貌似[$foo]这样的东西。
然后你定义js里面试试引用这个他生成的tag。
不过我猜你这个需求,在birt里面很可能不好用,因为birt4.2 eclipse里面那个开发界面实在是太差了,全是bug。
其实birt就是一个js插件的应用,具体哪个js是什么名字我记不清楚了。
http://www.eclipse.org/birt/documentation/integrating/scripting.php
你可以参考上面这个,里面有个birt工作的流程图,就是说你的rptdesign模版在被编译的时候,浏览器中有没有call到你定义js数据源的方法。我的意思是,你试试放在beforeOpen()或者beforeRender()不同的方法里面。
-------
不过我当时的做法就是,不要跟我自己过不去。所有数据源尽量都在java servlet里面call完,然后把整理好的数据全放到birt session里面,然后再servlet去run这个birt报表。大家既然已经知道birt很哇塞,根本不怎么好用,那就不用他去call 数据源,call数据源都在servlet里面做完,只用birt去显示数据。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |