Mozilla Rhino - 带自定义对象的ScriptableObject?

时间:2012-08-28 19:50:10

标签: java javascript rhino

我在我的Java应用程序中使用Mozilla Rhino(JavaScript引擎)。我定义了一个像这样的ScriptableObject:

public class TheObj extends ScriptableObject {
public TheObj(){
    //nothing
}
public TheObj(Scriptable scope, Scriptable prototype) {
    super(scope, prototype);
}

@Override
public String getClassName() {
    return "Foo";
}
@JSStaticFunction
public static Foo foo(Foo foo){
    return foo;
}

}

Foo类是:

public class Foo {
  public void bar(){
    System.out.println("it works");
  }
}

但是当我尝试ScriptableObject.defineClass(scope, TheObj.class); scope是来自Context.enter().initStandardObjects();的Scriptable时,它会抛出

org.mozilla.javascript.EvaluatorException: Unsupported parameter type "Foo" in method "bar".

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我明白了。我刚刚使用了Context.jsToJava(Object, Class<?>);

(实际上,函数foo()需要将Foo参数用作Java,而不仅仅是返回它)