【仅供内部供应商使用,不提供对外解答和培训】
Table of Contents |
---|
无
与内部JS扩展这样引入插件内部的js资源相对应,JavaScriptPlaceHolder接口主要用于引入一些第三方的js资源,常见于第三方系统集成、第三方图表集成、第三方UI库引入等场景。
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
package com.fr.stable.fun;
import com.fr.stable.StringUtils;
import com.fr.stable.fun.mark.Mutable;
/**
* Created by richie on 16/4/26.
* 脚本占位,用于在page.html或者form.html中引入脚本
*/
public interface JavaScriptPlaceHolder extends Mutable {
String MARK_STRING = "JavaScriptPlaceHolder";
int CURRENT_LEVEL = 2;
/**
* 占位的内容
* @return 内容
*/
String placeHolderContent();
/**
* 脚本内容
* @return 脚本描述对象
*/
ScriptTag[] holderScripts();
class ScriptTag {
private String type;
private String src;
private String text;
public static ScriptTag build() {
return new ScriptTag();
}
private ScriptTag() {
}
public ScriptTag type(String type) {
this.type = type;
return this;
}
public ScriptTag src(String src) {
this.src = src;
return this;
}
public ScriptTag text(String text) {
this.text = text;
return this;
}
public String toTag() {
StringBuilder sb = new StringBuilder();
sb.append("<script");
if (StringUtils.isNotEmpty(type)) {
sb.append(" ");
sb.append("type=");
sb.append("\"");
sb.append(type);
sb.append("\"");
}
if (StringUtils.isNotEmpty(src)) {
sb.append(" ");
sb.append("src=");
sb.append("\"");
sb.append(src);
sb.append("\"");
}
sb.append(">");
if (StringUtils.isNotEmpty(text)) {
sb.append(text);
}
sb.append("</script>");
return sb.toString();
}
}
}
|
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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();
}
|
产品线 | 版本 | 支持情况 | 备注 |
---|---|---|---|
FR | 8.0 | 支持 | |
FR | 9.0 | 支持 | |
FR | 10.0 | 支持 | 仅做兼容使用,新插件请勿使用! |
BI | 3.6 | 支持 | |
BI | 4.0 | 支持 | |
BI | 5.1 | 支持 | 仅做兼容使用,新插件请勿使用! |
BI | 5.1.2 | 支持 | 仅做兼容使用,新插件请勿使用! |
BI | 5.1.3 | 支持 | 仅做兼容使用,新插件请勿使用! |
在10.0版本中以下3种注册方式都只对报表预览生效,生效优先级 form>report>core。
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<extra-core>
<CssFileHandler class="your class name"/>
</extra-core> |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<extra-report>
<CssFileHandler class="your class name"/>
</extra-report> |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<extra-form>
<CssFileHandler class="your class name"/>
</extra-form> |
接口注册逻辑:在产品的服务器/报表/决策报表模块(com.fr.module.ServerModule、com.fr.report.module.EngineModule、com.fr.form.module.FormModule)启动的时候(module.start();)会从插件中分类读取相应申明的css资源。
接口的生效逻辑:com.fr.web.ResourceHelper#forceInitStyleCache方法执行时会把插件接口指向的css文件中的内容读取进来注入到报表预览的主体CSS中(区别于web组件接口:组件接口是独立的css文件加载)
String encode(); 接口方法默认已实现,表示的是引入的资源的编码方式,默认值是UTF-8
String[] pathsForFiles(); 中的css脚本文件path,指的是css文件在插件jar中的相对位置(如:com/demo/css/main.css)
demo地址:demo-css-file-handler
com.fr.stable.fun.JavaScriptFileHandler
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。