【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

一、特殊名词介绍

低版本产品 : 下文中的低版本产品特指FineReport10.0以下的版本

报表预览:下文中特指cpt/frm模板的预览方式,但不包含移动端预览和H5预览方式。

二、背景、场景介绍

该接口(当前)仅用于兼容低版本产品中的前端引入相关插件的实现。且只对报表的预览生效,决策平台中已无效。

三、接口介绍

JavaScriptFileHandler .java
package com.fr.stable.fun;

/**
 * @author richie
 * @date 2015-02-26
 * @since 8.0
 * JavaScript引入接口
 */
public interface JavaScriptFileHandler extends WebFileHandler {

    String XML_TAG = "JavaScriptFileHandler";

    int CURRENT_LEVEL = 1;

}
WebCoalition.java
package com.fr.stable.fun;

import com.fr.stable.fun.mark.Mutable;

/**
 * @author richie
 * @date 2015-02-26
 * @since 8.0
 */
public interface WebFileHandler extends Mutable {

    String ENCODE_SEPARATOR = "?encode=";

    /**
     * 返回Web端需要的文件的相对路径
     *
     * @return 文件的路径组成的集合
     */
    String[] pathsForFiles();

    String encode();

}


四、支持版本

产品线

版本

支持情况

备注

FR8.0支持
FR9.0支持
FR10.0支持仅做兼容使用,新插件请勿使用!
BI3.6支持
BI4.0支持
BI5.1支持仅做兼容使用,新插件请勿使用!
BI5.1.2支持仅做兼容使用,新插件请勿使用!
BI5.1.3支持仅做兼容使用,新插件请勿使用!

五、插件注册

在10.0版本中以下3种注册方式都只对报表预览生效,但是注册在core标签下加载的位置会更靠前一些。然后是form,最后是report

plugin.xml
<extra-core>
        <JavaScriptFileHandler class="your class name"/>
</extra-core>
plugin.xml
<extra-report>
        <JavaScriptFileHandler class="your class name"/>
</extra-report>
plugin.xml
<extra-form>
        <JavaScriptFileHandler class="your class name"/>
</extra-form>

六、原理说明

接口注册逻辑:在产品的服务器/报表/决策报表模块(com.fr.module.ServerModule、com.fr.report.module.EngineModule、com.fr.form.module.FormModule)启动的时候(module.start();)会从插件中分类读取相应申明的js资源。

接口的生效逻辑:com.fr.web.ResourceHelper#initDefaultJs和forceInitJSCache方法执行时会把插件接口指向的js文件中的内容读取进来注入到报表预览的主体JS中(区别于web组件接口:组件接口是独立的js文件加载)

七、特殊限制说明

String encode(); 接口方法默认已实现,表示的是引入的资源的编码方式,默认值是UTF-8

String[] pathsForFiles(); 中的js脚本文件path,指的是js文件在插件jar中的相对位置(如:com/demo/js/main.js)

八、常用链接

三组常见引入JS和CSS的插件接口对比

demo地址:demo-java-script-file-handler

com.fr.stable.fun.CssFileHandler

九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。禁止用于任何商业用途,若作为商用一切后果责任由使用者自行承担。

open-JSD-8035

open-JSD-8210

  • No labels