birt家园里面看到的关于birt底层操作的原理
>>1.?birt 与 ssh &动态生成参数页面 我现在要在已有的ssh项目中加入报表功能 ? 即使用El取,也是一个文件路径, ?
只要拿到ReportDesignHandle,就很容易取到相关的报表参数信息。可以调用BIRT Viewer的相关代码,或者直接通过BIRT engine的相关task去获取。可以看一下BIRT Viewer tag的相关源码。很简单的。
? >>2.birt jsp传参数
我在jsp页面已经做好数据筛选了,最后返回一个集合或者数组要传给报表,请问报表该怎么接受,处理这个参数绑定到数据集上呢???
解决方案:拼自符串传到报表里对参数进行处理吧。
你是说报表得到这儿集合进行遍历拼动态sql让报表查询并且展现。。。
那现在这个集合通过什么方式传,是放到session里面,还有什么方式。。 jsp页面发送一个action请求,这个请求该怎么写???才能到报表 ? >>3.在DataSet的EventHandler中如何获取参数 大家好,向各位高手请教一个问题: ?
感谢呼唤的回复.我就是想在这里拿到reportContext~
貌似不行~ ?
感谢呼唤的提醒,刚才试了一下,可以实现
public void beforeOpen(IDataSetInstance dataSet, ????????????IReportContext reportContext) throws ScriptException,在这个方法中可以拿到reportContext,但是好像只能取到在URL中定义的且同时在report parameters中定义的参数,而在report parameters中未定义的无法取到. 此外还想再请教一下 1.web viewer中的报表创建过程在哪里?或者说像DesignEngin,DesignConfig,PlatForm等对象是在哪里初始化的? 2.如果抛弃web Viewer,那么它所提供的打印/导出等按钮的功能能否自己实现? ~~~~~~~~~~~~~~~~ 谢谢各位~ ?
关于取参数,reportContext取的是报表里定义的参数,这是肯定的。
你要取url参数,试着使用reportContext.getHttpServletRequest,得到request,再取参数。 关于初始化,你也许把runtime和viewer混淆了。你说的那个是在runtime里,自己使用api来生成和运行报表时操作的对象。而如果使用了web viewer,他主要是使用了viewservlet来处理的。 如果不使用web viewer,你可以在runtime里调用运行报表,但是没有打印/导出的按钮。你当然可以自己实现那些功能。他也是使用的prototypejs来实现前台的ajax功能的。 ?
非常感谢"呼唤",您的技术和人品都让我非常钦佩!
仔细看了一下reportContext的API,几乎能从这个对象取到需要的所有东西,所以问题基本解决,再次感谢您的回复. 关于另外两个问题,我觉得都与Web Viewer的实现相关,不知道您是否熟悉Web Viewer的体系结构,根据<Integerating and extending birt>里介绍,Web Viewer用到了SOAP,Axis,prototype等,我想达到的效果就是找到并控制Web Viewer与Runtime的交互,因为我传给ViewerServlet的URL很可能不是BIRT能识别的格式,比如没有用__report=myRpt.rptdesign来指定报表文件的位置,而是传进来一个能代表report文件位置及更多信息的标识,根据这个标识来加入权限管理等更多功能. ~~~~~~~~~~~~~~~~~~~~~~~ 谢谢~ ?
花时间分析了一下birt的ajax调用,实现方式没以SOAP与Axis实现的WebService交换数据,其中,WebService的处理器为org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor,在此类的handleGetPage方法中完成report的创建并写入到response中,之后由客户端的js解析并展示到页面. 在handleGetPage方法中,使用org.eclipse.birt.report.service.actionhandler.BirtGetPageActionHandler类封装GetPage事件的调用,在此类内部,由继承关系可以分析出它要使用ReportService的getPage方法来得到一个ByteOutputStream,这个stream中,即为最终产生的报表输出流,将它写入到response中即可. 有不对的地方,望各位指正,谢谢~
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |