`
qq1988627
  • 浏览: 103200 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java执行javascript

    博客分类:
  • Java
 
阅读更多
package com.byd.mes.util.script;

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

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

import sun.org.mozilla.javascript.internal.NativeObject;

public class ScriptUtils {
	private static final ScriptEngineManager manager = new ScriptEngineManager();
	private Map<String,Callback> custom = new HashMap<String,Callback>();
	
	public interface Callback{
		void callBack(String script);
	}
	
	private Map<String,Callback> conf = new HashMap<String,Callback>();
	{
		conf.put("testing", new ScriptUtils.Callback(){
			@Override
			public void callBack(String script) {
				ScriptEngine engine = manager.getEngineByName("javascript");
				try {
					engine.eval(script);
					Invocable invocableEngine = (Invocable)engine;
					NativeObject obj = (NativeObject) invocableEngine.invokeFunction("testing", 1);			
					System.out.println(obj.get("nextOperation", null));
				} catch (Exception e) {
					throw new RuntimeException("执行Script脚本失败[function:testing]",e);
				}
				
			}});
	}
	
	public static void testing(String script){
		
	}

	public void setCustom(Map<String,Callback> custom) {
		this.custom = custom;
		this.conf.putAll(custom);
	}

	public Map<String,Callback> getCustom() {
		return custom;
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics