【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
在插件开发中,某些时候需要对结果报表做一些操作,以实现自定义的展示需求,比如给结果报表增加新的悬浮元素等。
我们以分页预览为例,首先来看一下分页预览从发起请求到最后响应给浏览器端展示HTML的过程。
可以看到结果报表是在PageActor(预览执行方式Actor接口的实现类)之后产生的,如果我们需要修改结果报表的话,那么久可以继承PageActor,重写这个类生成结果报表的方法。
/** * 从缓存中读取结果报表(如果有缓存) * * @param tpl 报表薄 * @param tplPath 报表路径 * @param reportCache 用于缓存报表的对象 * @param parameterMap 参数集 * @return 结果报表薄 */ public ResultWorkBook getResultBookFromCacheIfNeed(TemplateWorkBook tpl, String tplPath, ReportCache reportCache, Map parameterMap, int sheetIndex);
/** * 生成报表薄跨sheet计算器 * * @param workBook 报表薄 * @param parameterMap 参数集 * @return 跨sheet计算器 */ public WorkBookExecutor createWorkBookExecutor(WorkBook workBook, Map parameterMap);
一般来说,只需要重载getResultBookFromCacheIfNeed方法就可以实现修改结果报表的目的了。
public class ModifyActor extends PageActor { @Override public ResultWorkBook getResultBookFromCacheIfNeed(TemplateWorkBook tpl, String tplPath, ReportCache reportCache, Map parameterMap, int sheetIndex) { ResultWorkBook wb = super.getResultBookFromCacheIfNeed(tpl, tplPath, reportCache, parameterMap, sheetIndex); modifyWorkBook(wb); return wb; } private void modifyWorkBook(ResultWorkBook wb) { // 修改结果报表的具体实现 } }
接入点注册
<extra-report> <WebActor class="com.fr.plugin.demo.ModifyActor"/> </extra-report>