将多个值从Rhino返回到Java调用类

时间:2013-07-30 23:36:54

标签: java rhino

我正在尝试修改嵌入在Java中的一些Javascript代码,以便将多个值返回给调用的Java代码。

Java代码(调用Javascript):

...
Object result = execFunc.call(context, scope, scope, execArgs);
return ScriptRuntime.toString(result);

Javascript代码(由Java调用):

...
return "string";

我希望返回多个值。

我已经尝试修改Javascript以返回HashMap,如下所示:

...
var res = new java.util.HashMap();
res.put("String", "string");
res.put("Integer", 1);
return res;

但是当我在Java端投射时,我得到一个ClassCastException:

...
HashMap result = (HashMap) execFunc.call(context, scope, scope, execArgs);
return ScriptRuntime.toString(result);

结果:

java.lang.ClassCastException: org.mozilla.javascript.NativeJavaObject cannot be cast to java.util.HashMap

我没有依赖于在HashMap中返回它。我想要返回的值是String和Integer。理想情况下,我希望返回一个元组或一个HashMap,但是如果让它工作的唯一方法是在数组中返回两个字符串,然后解析出也可以的整数。

非常感谢任何返回多个值的指导。

这是正确的方法,我应该注入一个可以在Javascript端填充的Java对象吗?

1 个答案:

答案 0 :(得分:1)

试试这个

NativeJavaObject njo = (NativeJavaObject) execFunc.call(context, scope, scope, execArgs);
Map map = (Map) njo.unwrap();