birt的IRunAndRenderTask接口提供了
addScriptableJavaObject(java.lang.String jsName, java.lang.Object obj)
方法,利用這個方法,在直接調(diào)用birt api操作處理報(bào)表的時候,我們可以將任何java對象通過
addScriptableJavaObject("xxx",Object)加進(jìn)birt去,然后在birt腳本中直接調(diào)用xxx.method()進(jìn)行操作。
我的測試是在一個webwork+spring+hibernate的webapp應(yīng)用中進(jìn)行的,進(jìn)行報(bào)表處理的代碼參照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();
...