java:将map送给JavaScript并执行脚本

1. main函数

package org.example;

import java.util.List;


public class Main {
    public static void main(String[] args) throws Exception {
        JSFileList jsFileList = new JSFileList();
        List<String> list = jsFileList.GetList();

        Valist valist = new Valist();

        JavaScriptEngine javaScriptEngine = new JavaScriptEngine(valist);

        for (String name : list){
            javaScriptEngine.Execute(name);
        }

        int i = 0;
    }
}

2. 调用java脚本引擎

package org.example;

import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.FileReader;
import java.io.Reader;


public class JavaScriptEngine {
    private final ScriptEngine engine;
    private final Object object;

    public JavaScriptEngine(Object object){
        this.object = object;
        ScriptEngineManager engineManager = new ScriptEngineManager();
        engine = engineManager.getEngineByName("javascript");
    }

    public void Execute(String fileName) throws Exception {
        Bindings bindings = engine.createBindings();
        bindings.put("Valist", object);

        Reader reader = new FileReader(fileName);
        engine.eval(reader, bindings);
    }
}

3. java内部map

package org.example;

import java.util.HashMap;
import java.util.Map;

public class Valist {
    private final Map<String, Object> tagvalist = new HashMap<>();
    public Valist(){
        tagvalist.put("A1", 10.8);
        tagvalist.put("A2", 10);
        tagvalist.put("A3", 4);
        tagvalist.put("A4", 23);
    }

    public Object GetVal(String name){
        return tagvalist.get(name);
    }

    public void SetVal(String name, Object val){
        tagvalist.put(name, val);
    }
}

4. js文件列表

package org.example;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class JSFileList {
    private final String currentDir = System.getProperty("user.dir") + "\\Data";

    public List<String> GetList() {
        File folder = new File(currentDir);
        File[] fileList = folder.listFiles();
        List<String> ret = new ArrayList<>();

        if (fileList == null)
            return ret;

        for (File file : fileList) {
            if (file.isFile() && file.getName().toLowerCase().endsWith(".js")) {
                ret.add(currentDir + "\\" + file.getName());
            }
        }

        return ret;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值