`
y806839048
  • 浏览: 1117301 次
  • 性别: 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;

    }

 

 

分享到:
评论

相关推荐

    springboot整合dwr实现js调用java方法

    SpringBoot整合Direct Web Remoting (DWR)是一个常见的技术实践,它允许JavaScript在浏览器端直接调用服务器端的Java方法,极大地增强了Web应用的交互性。在这个过程中,我们通常会结合使用FreeMarker或JSP作为视...

    中控指纹JAVA JS调用说明文档

    中控指纹JAVA JS调用说明文档是一份详细的技术文档,旨在介绍如何在浏览器/服务器(B/S)环境中利用Java与JavaScript来实现指纹识别的功能。该文档不仅涵盖了ZKOnlineSDK的基本描述和架构,还深入介绍了其核心特性...

    Velocity.js - 来自淘宝的 JS 模板引擎.pdf

    总的来说,Velocity.js是一个强大且灵活的JavaScript模板引擎,它的设计思想源于Java的Velocity,但在JavaScript环境中提供了更广泛的适用性和卓越的性能表现。无论是在服务器端的Node.js环境还是前端浏览器,...

    基于Java的模板引擎Beet.zip

    Beet,或Beetl,是一款高效、强大且易用的Java模板引擎,它的出现为Java开发带来了很多便利。 Beetl的核心设计理念是简洁、快速和易用。它提供了丰富的语法支持,包括表达式、控制结构、函数等,使得模板编写更加...

    Java 8 Nashorn 脚本引擎

    1. **快速执行**:Nashorn引擎使用了优化的编译器,使其在执行JavaScript代码时具有较高的性能。 2. **互操作性**:Java与JavaScript之间有着良好的互操作性,允许Java对象无缝地在JavaScript环境中使用。例如,Java...

    经典的java后台模板《二》

    "ricricucit-html5admin-efa485e"这个文件名可能表示这是一个基于HTML5的后台管理模板,可能包含了CSS3、JavaScript(可能包括jQuery、Vue.js或React.js等前端库)以及一些后端接口调用示例。这样的模板通常会提供...

    Jade —— 源于 Node.js 的 HTML 模板引擎

    Jade 是一种高性能的模板引擎,它深受 Haml(一种用于 Ruby 的模板引擎)的影响,采用 JavaScript 编写,主要面向 Node.js 开发者提供服务。通过 Jade,开发者能够更加高效、简洁地创建 HTML 文档。 #### 二、特性 ...

    java开源包1

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

    基于Java的HTML5模板引擎 Thymeleaf.zip

    Thymeleaf是一款强大的Java模板引擎,主要用于生成HTML5、XML、JavaScript以及CSS等Web内容。它在设计上强调了可读性和易于维护性,使得开发者在编写静态HTML原型时可以无缝过渡到动态生成的页面。Thymeleaf的主要...

    基于java的HTML5模板引擎 Thymeleaf.zip

    Thymeleaf是一款强大的Java模板引擎,主要用于生成HTML5页面,尤其在Web应用程序中表现出色。它以自然的HTML语法为基础,允许开发者在HTML代码中直接编写模板逻辑,而无需离开HTML环境。Thymeleaf的主要特点在于其可...

    JavaApplet与JavaScript交互方法的探讨.pdf

    3. **Applet调用JavaScript**:JavaApplet可以使用`netscape.javascript.JSObject`或`sun.java2d.npsv.NPSVAppletStub`类(取决于浏览器的兼容性)来调用页面上的JavaScript函数。 4. **LiveConnect**:这是早期...

    Beetl3 高速模板引擎

    3. **数据绑定**:在Java代码中,创建模板引擎实例,设置数据模型,然后调用渲染方法将数据填充到模板中,生成最终的输出。 4. **模板调试**:Beetl3提供了良好的错误提示和调试机制,便于开发者定位和解决问题。 ...

    [其他类别]NEATTeamplate 青翼模板引擎 1.0.0_neattemplate_1_0_0.zip

    5. **学习和使用**:要开始使用青翼模板引擎,你需要了解它的基本语法,熟悉如何定义模板、绑定数据以及如何调用引擎来生成HTML。压缩包内的文档和示例将非常有助于这一步骤。 6. **最佳实践**:在实际项目中,合理...

    highcharts的java写法(一个封装方法调用即可)

    此外,还可以考虑使用第三方库如Jackson或Gson来简化JSON序列化和反序列化过程,或者使用模板引擎(如FreeMarker或Thymeleaf)来动态生成HTML页面,避免直接在JavaScript中拼接JSON字符串。 总的来说,Java和...

    java:将html生成图片的所有方法比较

    在Java开发中,将HTML转换为图片是一种常见的需求,例如用于网页截图、报表生成或邮件模板预览。本文将深入探讨几种不同的方法,分析它们的优缺点,以帮助开发者选择最适合项目需求的解决方案。 1. **Java2DPDF库转...

    Beetl 模版引擎

    Beetl是一种新一代模板引擎,它具有强大的功能和优异的性能,易于学习和使用。它支持多种web框架的整合,如SpringMVC、JFinal、Struts、Nutz、Jodd和Servlet等,并能够单独开发和测试模板,无需M和C部分的参与。...

    商业编程-源码-模板引擎(标签解析)示例源码.zip

    在IT行业中,模板引擎是一种非常重要的工具,尤其在Web开发领域。它允许开发者将静态的HTML模板与动态数据结合,生成最终的HTML页面。这种技术极大地提高了开发效率,减少了重复劳动,同时也使得前后端分离更加明确...

    java开源包8

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

    safe.js中文使用文档

    - 对于动态生成的内容,优先考虑使用safe.js的模板引擎,而不是手动拼接字符串。 - 了解并遵循safe.js的错误处理机制,及时捕获和解决可能出现的安全问题。 6. **学习资源与社区支持**: 通过阅读这份中文文档,...

    JAVASCRIPT

    在Java中调用WORLD模板,可能是指在Java应用中使用JavaScript引擎,如Nashorn或Rhino,来执行JavaScript代码。这种技术被称为JavaScript嵌入,它允许Java开发者利用JavaScript的灵活性和库资源,同时保持Java的系统...

Global site tag (gtag.js) - Google Analytics