2012-11-30 36 views
2

如何将Java对象从JavaScript发送到Java? LiveConnect允许我们从调用applet方法获取Java对象。也就是说,我们可以有以下方法在小程序:将Java对象从JavaScript发送到Applet

public MyClass getMyClass() { return new MyClass(); }` 

其中MyClass是:

public class MyClass implements Serializable { 
    private String a; 
    private String b; //getters, setters 
} 

和JS访问该对象的使用:

applet.getMyClass().someMethod();

但我怎么能传递对象从JavaScript(json对象,我认为)到java方法(而不是作为json字符串)?即我想在applet的方法是这样的:

public void myMethod(MyClass var)

,并从JavaScript调用此方法传递MyClass类型的参数。如何在JS中构建MyClass对象?我希望从LiveConnect的JSON做转换到自动Java对象..

+0

没有ü尝试通过JSON对象? – vels4j

+0

嗨。就是想。任何答案都有帮助吗?你有没有进展?哦,祝你的项目好运:-)当语言彼此交谈时,我喜欢它! –

+0

@MiltiadisKokkonidis我决定以另一种方式走,所以我没有测试你的解决方案。但看起来你的解决方案是有效的,所以我将你的答案标记为已接受。谢谢。 – MyTitle

回答

2

我相信这应该会给你一个关于如何去做这件事的好主意。

import netscape.javascript.*; 

public class MyClass implements Serializable { 
public String a; 
public String b; 

    public JavaDog(JSObject o) { 
     this.a= (String)o.getMember("a"); 
     this.b = (String)o.getMember("b"); 
    } 
} 

然后,您使用new Packages.MyClass(yourJavaScriptObject)来创建要传递给Java的对象。

点击此处了解详情:

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/LiveConnect_Overview

0

的Java LiveConnect文件说:

当其先前返回的JavaScript引擎 一个Java对象被传递回Java,该对象只需检查 与目标类型的分配兼容性。 这条规则唯一的例外是自动转换为java.lang.String

+0

注意:'之前返回到JavaScript引擎的内容被传回给Java'我不会从方法返回任何值。我想传递一个参数给'MyClass'类型的applet方法。 – MyTitle

+1

我的问题是如何在Java脚本中为'MyClass'创建一个实例对象,如'MyClass myClass = new MyClass()' – vels4j