在java中编写脚本化BIRT数据源时访问参数

我正在使用带有脚本化POJO数据源的BIRT报告,但无法访问报告参数。 我用Java编写所有内容,而不是javascript。 代码如下:

public class StockDataSetHandler extends ScriptedDataSetEventAdapter { ... @Override public void open(IDataSetInstance dataSet) { count = 0; StockDaoMock mockStockDao = new StockDaoMock(); //The code below works in javascript. How can I do the equivalent //in Java? Where do I get params from? String paramValue = params["myparameter"]; stockData = mockStockDao.getStockValues(paramValue); } } 

BIRT的文件是指params集合。 我如何在Java中掌握它?

干杯

最好通过Report Design中的JavaScript层使用基于POJO的脚本数据源。 这使您可以访问报表上下文元素(如参数),并使Java对象保持不可知的数据提供程序。

这是我通常设置的方式:

1)Java层:

1.1)数据模型类:具有setter和getter的一类数据元素。 这个class没有工作

1.2)控制器类:构建和维护数据模型类的实例数组。 这是您将从“报告”图层访问的类。 这个类应该实现一个“action”方法(比如getRows(...) ),它接受你的参数并返回“rows”的ArrayList

2)报告层:

2.1)创建一个新的脚本数据源。

2.1.1 )覆盖数据源上的“打开”脚本以实例化控制器对象。 代码将如下所示(这是您将参数值放入Java层的方式)

 // This will track your current row later on count = 0; // Create instance of the Controller class controller = new Packages.com.your.package.path.DataSetController(); //Load the rows (Note here is where you are able to pass your parameter into the Java layer) rows = controller.getRows(params["myParameter"]); 

2.2)使用脚本数据源创建新数据集。

2.2.1)覆盖fetch脚本以处理由控制器类构建的ArrayList。 代码如下所示:

 // Iterating over the ArrayList built by the Controller Class bound to the data source. if(count < rows.size()){ // Set the column values on the data set off the values store in the Data model class. row["product"] = rows.get(count).getProduct(); row["date"] = rows.get(count).getDate(); row["units"] = rows.get(count).getUnits(); count++; return true; } return false; 

这应该够了吧。 祝好运!