在java中编写脚本化BIRT数据源时访问参数
我正在使用带有脚本POJO数据源的BIRT报告,访问报告参数时遇到问题。我用Java编写所有脚本,而不是javascript。代码如下:在java中编写脚本化BIRT数据源时访问参数,java,reporting,birt,Java,Reporting,Birt,我正在使用带有脚本POJO数据源的BIRT报告,访问报告参数时遇到问题。我用Java编写所有脚本,而不是javascript。代码如下: public class StockDataSetHandler extends ScriptedDataSetEventAdapter { ... @Override public void open(IDataSetInstance dataSet) { count = 0; StockDaoMock mockStockDao = new
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中获得它
干杯
Tin在报告设计中,最好通过JavaScript层使用基于POJO的脚本化数据源。这使您能够访问诸如参数之类的报表上下文元素,并使Java对象保持不可知的数据提供程序 以下是我通常的设置方式: 1) Java层: 1.1)数据模型类:一类具有setter和getter的数据元素。这个班没有作业可做 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)重写获取脚本,以处理控制器类生成的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;
//迭代绑定到数据源的控制器类生成的ArrayList。
如果(计数
这应该能奏效。祝你好运 我尝试了您的方法,但出现以下错误:无法在函数_bm_FETCH()中执行脚本。源:-----“+if(count