热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BIRT运行时动态设置资源相对路径的方法

为什么80%的码农都做不了架构师?用BIRT开发报表时,可能会引用其他类型的文件,比如JS文件,库文件等,

为什么80%的码农都做不了架构师?>>>   hot3.png

        用BIRT开发报表时,可能会引用其他类型的文件,比如JS文件,库文件等,开发时引入这些资源文件时,在报表源文件中是一个相对路径(开发时这个相对路径具体相对于哪个根目录,需要在BIRT设计器的选项中设置,具体位置在eclipse->window->preferences->report design->resource中设置相对路径的根目录,但是注意这个根路径是全局性的,如果每个报表相对根路径不同,则只能手工修改源文件),因此在BIRT的运行时要想正确处理这个相对路径,需要动态的设置一个这个相对路径的根目录,本文将介绍两种设置方法。

    这两种方法都是基于ReportEngine的openReportDesign方法,因此可以针对不同的报表设置不同的相对根路径。

    1.IResourceLocator扩展:

        IReportEngine的openReportDesign方法可以有一个IResourceLocator类型的参数,可以通过实现该接口的findResource方法来动态设置相对目录根路径,BIRT也内置了该接口的实现ResourceLocatorImplBase,该实现较为复杂,有兴趣的可以研究其源代码,并且初步判断该实现在BIRT4.4版本中有Bug,不建议使用。

    2.IModuleOption.RESOURCE_FOLDER_KEY常量:

        该方法较为简单,以相对根路径为WEB的根目录为例,样例代码如下:  

IReportEngine birtEngine = ...;
Map moduleOptions = new HashMap();
moduleOptions.put(IModuleOption.RESOURCE_FOLDER_KEY,servletContext.getRealPath("/"));
IReportRunnable runnable = birtEngine.openReportDesign(reportFileName,null,moduleOptions);



转:https://my.oschina.net/liyuj/blog/380362



推荐阅读
author-avatar
丨为你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有