方法与接口说明
接口名
报表计算监听类:com.runqianapp.view.listener.ViewReportListener
接口说明
ViewReportListener是一个抽象类,开发者可以通过继承该监听类并实现其相应方法,完成报表计算过程中的客户化处理。
例如:
-
可以在报表计算前,检查用户登录信息、操作权限及其他信息
-
可以在报表导出前,对报表对象的内容进行修改操作
在监听类中,可以使用session对象、request对象、response对象、报表运行环境对象、报表计算前后报表对象等等。具体请查看下面的“方法说明”和“重要变量”。
监听类作用对象与报表运算过程的关系
报表计算监听类中一共提供了报表计算前、报表计算后、报表结果分页后、报表打印导出前四个监听方法,用于对报表计算过程的不同阶段进行监听处理。
例如,用户对一个报表的使用过程如下:
(1)客户端发起报表请求 -> (2)服务器端报表引擎对报表进行计算 -> (3)生成计算后报表结果 -> (4)如果报表设置了分页则进一步生成分页后的报表结果 -> (5)报表结果传回客户端展现 -> (6)客户端对当前展现报表发起打印导出请求 -> (7)报表引擎执行对报表的导出计算 -> (8)打印导出请求的报表结果发回客户端
监听类的作用对象如下:
-
报表计算前监听方法在执行(2)之前被自动调用
-
报表计算后监听方法在(3)完成后被自动调用
-
报表结果分页后监听方法在(4)完成后被自动调用
-
报表打印导出前监听方法在执行(7)之前被自动调用
接口方法
BeforeCalc()
语法:public IReport BeforeCalc(IReport ir,Context ctx,Map<String,Object> params)
参数说明:
-
IReport 报表模版对象
-
Context 报表运行的上下文环境对象
-
Map<String,Object> params 可以通过该参数获取session 、 request 、 response
返回值:处理后的报表模版对象
功能说明:报表计算前监听接口BeforeCalc(),用于在报表计算前进行自己的业务处理,或者根据需要对报表模板进行修改。例如动态改变报表的数据源连接、增删改报表的参数和宏、修改报表属性、修改单元格属性等。
AfterClac()
语法:public IReport AfterClac(IReport ir,Context ctx,Map<String,Object> params)
参数说明:
-
IReport 计算后的报表对象
-
Context 报表运行的上下文环境对象
-
Map<String,Object> params 可以通过该参数获取session、request
返回值:处理后的的报表对象
功能说明:报表计算后监听接口AfterClac(),用于在报表计算后、分页前进行自己的业务处理,或者根据需要对分页前的报表运算结果进行修改。例如对运算结果中内容相同的相邻单元格进行合并,实现动态合并单元格。
AfterPaging()
语法:public IReport[] AfterPaging(IReport[] irs,Context ctx,Map<String,Object> params)
参数说明:
-
IReport[] 分页后的 IReport 对象数组
-
Context 报表运行的上下文环境对象
-
Map<String,Object> params 可以通过该参数获取session、request
返回值:分页后的IRerport对象组
功能说明:报表结果分页后接口AfterPaging(),用于在报表结果分页后展现前进行自己的业务处理,或者根据需要对分页后IReport组进行修改。
BeforeExport()
语法:public IReport BeforeExport(IReport ir,Context ctx,Map<String,Object> params)
参数说明:
-
IReport 计算后的报表结果对象
-
Context 报表运行的上下文环境对象
-
Map<String,Object> params 可以通过该参数获取session、request
返回值:计算后的报表对象
功能说明:报表结果打印、导出前监听接口BeforeExport(),用于在报表展现后、打印导出前进行自己的业务处理,实现展现与导出、打印结果不一样的需求。例如导出excel时生成目录页。
重要变量
使用报表计算监听类,还需要了解以下参数的作用。
IReport
该参数表示报表对象。
在监听类中通过该对象可以获取和设置报表的属性、单元格属性等。
IReport的详细介绍请参考:IReport。
Context
该参数表示报表运算时的上下文环境。
在监听类中通过该对象可以获取或者设置报表计算环境中的数据源、参数与宏的值等。
Context的详细介绍请参考:Context。
Map<String,Object> params
在报表监听类中,BeforeCalc()方法的params参数中封装了session、request、response对象。其它三个方法的params参数中封装了session、request对象。
开发者可以通过该参数的get方法获取相应对象,在客户化处理的过程中进行使用。
例如下面代码,是从params中获取session对象:
HttpSession session=(HttpSession)params.get("session");
例如下面代码,是从params中获取request对象:
HttpServletRequest request=(HttpServletRequest)params.get("request");
response对象的获取方式可参考上面代码。