birt的IRunAndRenderTask接口提供了
addScriptableJavaObject(java.lang.String jsName, java.lang.Object obj)
方法,利用這個方法,在直接調用birt api操作處理報表的時候,我們可以將任何java對象通過
addScriptableJavaObject("xxx",Object)加進birt去,然后在birt腳本中直接調用xxx.method()進行操作。
我的測試是在一個webwork+spring+hibernate的webapp應用中進行的,進行報表處理的代碼參照http://wiki.eclipse.org/index.php/Servlet_Example編寫,在代碼中,寫了一句
task.addScriptableJavaObject("ctx",
WebApplicationContextUtils.getWebApplicationContext(sc));
birt中定義了一個scripts datasource,然后定義一個data set,在dataset的open方法中編寫腳本
infoManager=ctx.getBean("infoManager");
infos=infoManager.loadAll();
...