2012-11-30 82 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

相關問題