`
y806839048
  • 浏览: 1082469 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

js模板(java调用js),邮件模板引擎使用

阅读更多

 

https://www.iteye.com/blog/user/yuhuiblog6956676dfdsfs8883568269/blog/2509258

以上是string模板,html模板也有对应的模板框架

 

用对应的引擎把模板路径,实际内容传入即可--思路一样

1,对应的模板引擎加入模板路径生成对应的模板实例

2,模板实例处理要处理的内容

 

davinci的邮件模板源码:

 

MailUtils

inviteOrgMemberTemplate.html

 

 

 

 String text = templateEngine.process(template, context);

 

  public final String process(String template, IContext context) {

        return this.process(new TemplateSpec(template, (Set)null, (TemplateMode)null, (String)null, (Map)null), context);

    }

 

 

   public final String process(TemplateSpec templateSpec, IContext context) {

        FastStringWriter stringWriter = new FastStringWriter(100);

        this.process((TemplateSpec)templateSpec, (IContext)context, (Writer)stringWriter);

        return stringWriter.toString();

    }

 

 

 

 

davinci的脚本模板源码:

ScriptUtiils

executeParam.js

Constants

 

   public static ScriptEngine getExecuptParamScriptEngine() throws Exception {

        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

        engine.eval(new InputStreamReader(classLoader.getResourceAsStream(Constants.EXECUTE_PARAM_FORMAT_JS)));---模板路径

        return engine;

    }

 

WidgetServiceImpl:

 ScriptEngine engine = getExecuptParamScriptEngine();

 executeParam = getViewExecuteParam((engine), null, widget.getConfig(), null);--通过模板引擎调用js(java调用js)

 

配置解析成json对象:

function getDashboardItemExecuteParam(dashboardConfigJson, widgetConfigJson, itemId) {

    var dashboardConfig = JSON.parse(dashboardConfigJson || '{}')

    var widgetConfig = JSON.parse(widgetConfigJson || '{}')

    var globalFilters = getGlobalFilters(dashboardConfig, +itemId)

    var widgetExecuteParam = getWidgetExecuteParam(widgetConfig)

    widgetExecuteParam.filters = widgetExecuteParam.filters.concat(globalFilters.filters)

    widgetExecuteParam.filters = widgetExecuteParam.filters.map(function(filter) { return JSON.stringify(filter) })

    widgetExecuteParam.params = widgetExecuteParam.params.concat(globalFilters.params)

    return widgetExecuteParam

}

 

function getWidgetExecuteParam(widgetConfig) {

    var _widgetConfig = widgetConfig;

    var cols = _widgetConfig.cols;

    var rows = _widgetConfig.rows;

    var metrics = _widgetConfig.metrics;

    var filters = _widgetConfig.filters;

    var color = _widgetConfig.color;

    var label = _widgetConfig.label;

    var size = _widgetConfig.size;

    var xAxis = _widgetConfig.xAxis;

    var tip = _widgetConfig.tip;

    var orders = _widgetConfig.orders;

    var cache = _widgetConfig.cache;

    var expired = _widgetConfig.expired;

    var nativeQuery = false

    if (_widgetConfig.chartStyles && _widgetConfig.chartStyles.table) {

        nativeQuery = _widgetConfig.chartStyles.table.withNoAggregators

    }

....

}

 

 

 

 

public static ViewExecuteParam getViewExecuteParam(ScriptEngine engine, String dashboardConfig, String widgetConfig, Long releationId) {

        try {

            Invocable invocable = (Invocable) engine;

            Object obj = invocable.invokeFunction("getDashboardItemExecuteParam", dashboardConfig, widgetConfig, releationId);

 

            if (obj instanceof ScriptObjectMirror) {

                ScriptObjectMirror vsom = (ScriptObjectMirror) obj;

                List<String> groups = new ArrayList<>();

                List<Aggregator> aggregators = new ArrayList<>();

                List<Order> orders = new ArrayList<>();

                List<String> filters = new ArrayList<>();

                Boolean cache = false;

                Boolean nativeQuery = false;

                Boolean filterAndFlag = false;

 

                Long expired = 0L;

                List<Param> params = new ArrayList<>();

                for (String key : vsom.keySet()) {

                    switch (key) {

                        case "groups":

                            ScriptObjectMirror groupMirror = (ScriptObjectMirror) vsom.get(key);

                            if (groupMirror.isArray()) {

                                Collection<Object> values = groupMirror.values();

                                values.forEach(v -> groups.add(String.valueOf(v)));

                            }

                            break;

                        case "aggregators":

                            ScriptObjectMirror aggregatorsMirror = (ScriptObjectMirror) vsom.get(key);

                            if (aggregatorsMirror.isArray()) {

                                Collection<Object> values = aggregatorsMirror.values();

                                values.forEach(v -> {

                                    ScriptObjectMirror agg = (ScriptObjectMirror) v;

                                    Aggregator aggregator = new Aggregator(String.valueOf(agg.get("column")), String.valueOf(agg.get("func")));

                                    aggregators.add(aggregator);

                                });

                            }

                            break;

                        case "orders":

                            ScriptObjectMirror ordersMirror = (ScriptObjectMirror) vsom.get(key);

                            if (ordersMirror.isArray()) {

                                Collection<Object> values = ordersMirror.values();

                                values.forEach(v -> {

                                    ScriptObjectMirror agg = (ScriptObjectMirror) v;

                                    Order order = new Order(String.valueOf(agg.get("column")), String.valueOf(agg.get("direction")));

                                    orders.add(order);

                                });

                            }

                            break;

                        case "filters":

                            Object o = vsom.get(key);

                            if (o instanceof String) {

                                String filtersJsonStr = (String) o;

                                if (!StringUtils.isEmpty(filtersJsonStr)) {

                                    filters.add(filtersJsonStr);

                                }

                            } else if (o instanceof ScriptObjectMirror) {

                                ScriptObjectMirror filterMirror = (ScriptObjectMirror) o;

                                if (filterMirror.isArray() && filterMirror.size() > 0) {

                                    Collection<Object> values = filterMirror.values();

                                    values.forEach(v -> {

                                        filters.add(String.valueOf(v));

                                    });

                                }

                            }

                            break;

                        case "cache":

                            cache = (Boolean) vsom.get(key);

                            break;

                        case "expired":

                            expired = Long.parseLong(String.valueOf(vsom.get(key)));

                            break;

                        case "params":

                            ScriptObjectMirror paramsMirror = (ScriptObjectMirror) vsom.get(key);

                            if (paramsMirror.isArray()) {

                                Collection<Object> values = paramsMirror.values();

                                values.forEach(v -> {

                                    ScriptObjectMirror agg = (ScriptObjectMirror) v;

                                    Param param = new Param(String.valueOf(agg.get("name")), String.valueOf(agg.get("value")));

                                    params.add(param);

                                });

                            }

                            break;

                        case "nativeQuery":

                            nativeQuery = (Boolean) vsom.get(key);

                            break;

                        case "filterAndFlag":

                            filterAndFlag = (Boolean) vsom.get(key);

                            break;

                    }

                }

 

                return new ViewExecuteParam(groups, aggregators, orders, filters, params, cache, expired, nativeQuery,filterAndFlag);

            }

 

        } catch (ScriptException e) {

            e.printStackTrace();

        } catch (NoSuchMethodException e) {

            e.printStackTrace();

        }

        return null;

    }

 

 

分享到:
评论

相关推荐

    java开源包1

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包8

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包11

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包6

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包9

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包4

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    JAVA上百实例源码以及开源项目

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    JAVA上百实例源码以及开源项目源代码

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    java开源包101

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包5

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包10

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包3

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    Beetl模板引擎-其他

    Beetl相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下:1、功能完备:同主流的java模板引擎相比,Beetl具有绝大多数功能。...

    java开源包2

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包7

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    Java资源包01

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java:Java备忘单

    使用 JavaScript 引擎 LambdaStreamTest.java Lambda 示例(Java 8 功能) 流示例(Java 8 特性) StrToMap.java 从字符串数据创建 Map 对象的示例 异常测试.java ConsoleScannerTest.java 从 System.in 或...

    Ext Js权威指南(.zip.001

    1.2.4 在javascript中使用json / 4 1.2.5 在.net中使用json / 8 1.2.6 在java中使用json / 12 1.2.7 更多有关json的信息 / 15 1.3 ext js 4概述 / 15 1.4 ext js的开发工具的获取、安装与配置介绍 / 18 1.4.1...

    ssm学生成绩管理源码工程

    SSM是Spring + SpringMVC + MyBatis的组合,是Java开发中...前端设计:设计一个简单的前端界面,可以使用HTML、CSS和JavaScript,也可以通过模板引擎如Thymeleaf来生成动态页面。 测试:对你的系统进行测试,确保所有功

Global site tag (gtag.js) - Google Analytics