zoukankan      html  css  js  c++  java
  • ScriptTransformer

    ScriptTransformer可能由java支持的JavaScript语言或者其他脚本语言写成的转换器.只支持Java 6以上版本.

    例1:

    <dataConfig>
        <script><![CDATA[
                    function f1(row)        {
                        row.put('message', 'Hello World!');
                        return row;
                    }
            ]]></script>
        <document>
            <entity name="e" pk="id" transformer="script:f1" query="select * from X">
                ....
            </entity>
        </document>
    </dataConfig>

    例2:

    <dataConfig>
            <script><![CDATA[
                    function CategoryPieces(row)    {
                        var pieces = row.get('category').split('/');
                        var arr = new java.util.ArrayList();
                        for (var i=0; i<pieces.length; i++) {
                           arr.add(pieces[i]);
                        }
                        row.put('categorypieces', arr);
                        row.remove('category');
                        return row;
                    }
            ]]></script>
            <document>
                    <entity name="e" pk="id" transformer="script:CategoryPieces" query="select * from X">
                    ....
                    </entity>
            </document>
    </dataConfig>

    例3:

    <script><![CDATA[
            id = 1;
            function GenerateId(row) {
                row.put('id', (id ++).toFixed());
                return row;
            } 
            function WipOffHtml(row) {
                var file = row.get('file');
                row.put('file',file.substr(0,file.indexOf('.')));
                return row;
            }          
           ]]>
    </script>
    • 脚本标签放置在dataConfig节点里边, 默认情况下,该语言被认为是使用Javascript.如果想要使用其他语言,在script标签中指定属性language="MyLanguage".必须支持jdk1.6以上
    • 可以写你想要使用的尽可能多的transformer 函数.每个函数都必须接收row变量,对应于Map<String, Object> .并且返回row结果集.
    • 使用row.remove(keyname)删除条目.
    • 使用var arr = new java.util.ArrayList()为单个字段添加多个条目,不能使用JavaScript数组.
    • 文档为Java Map对象
    • 文档为Java ArrayList对象
    • 通过在实体中指定transformer="script:<function-name>",来使用函数生成条目.
    • 在上面的data-config中,实体e返回的每一个row都会执行一个f1函数.
    • 执行语法和java变压器一样,在抽象类Transformer中,transformRow(Map<String,Object> , Context context)中有两个参数,因为它是JavaScript的第二个参数,可以omittted,它仍然有效

     不当之处,敬请指正 ! 谢谢!

  • 相关阅读:
    leetcode 673. 最长递增子序列的个数 java
    leetcode 148. 排序链表 java
    leetcode 98. 验证二叉搜索树 java
    leetcode 29. 两数相除 java
    leetcode 234. 回文链表 java
    Valid Palindrome LeetCode Java
    Single Number II LeetCode Java
    Single Number LeetCode java
    Search in Rotated Sorted Array II LeetCode Java
    Search in Rotated Sorted Array leetcode java
  • 原文地址:https://www.cnblogs.com/a198720/p/4267603.html
Copyright © 2011-2022 走看看