ScriptEngineManager没有传递绑定变量?

时间:2013-09-19 16:24:01

标签: java javascript-engine

我试图绑定一个变量,但是javascript引擎说我的java对象上没有getRow()方法,所以我不知道这个代码不起作用

javascript中的context.getRow()是个问题。

public static void main(String[] args) throws ScriptException, NoSuchMethodException {
    Map<String, String> jsonRow = new HashMap<String, String>();
    jsonRow.put("temp", "56");
    TriggerContext ctx = new TriggerContext(jsonRow , null);

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("javascript");        
    engine.put("context", ctx);

    //Object result = compiledScript.eval();
    engine.eval("function trigger() { var t = context.getRow(); var val = t['temp']; if(val > 55) return false; else return true; }");

    Invocable inv = (Invocable) engine;
    // invoke the global function named "hello"
    Object result = inv.invokeFunction("trigger" );
    System.out.println("result="+result);
    System.out.println("type="+result.getClass());
}

0 个答案:

没有答案