2012-04-28 94 views
11

我怎麼能手工創建一個JavaScriptObject當我有這個類如何在GWT中手動創建JavaScriptObject?

public class Person extends JavaScriptObject{ 
    protected Person(){} 

    public final native String FirstName()/*-{ 
     return this.firstName; 
    }-*/; 

    public final native String LastName()/*-{ 
     return this.lastName; 
    }-*/; 
} 

我問,因爲我有這個JavaScriptObject庇隆

public JsArray<Person> persons = JavaScriptObject.createArray().cast(); 

一個數組,我想這個充滿數組其中一些Person對象

Peson a = new Person(); 
a.setfirstName(textField1.getText()); 
a.setLastName(textField2.getText()); 
persons.push(a) 

但我不知道如何手動創建這樣的對象。 我將從UI組件中獲取firstName和lastName的值,如textField。 請幫忙!

回答

11

你應該可以做到這一點?

Person a = (Person)JavaScriptObject.createObject().cast(); 
+0

非常感謝。我有兩個問題:1)你和這個版本有什麼不同 - > Person a = Person.createObject()cast(); 2)我如何將值傳遞給人物?我應該創建setter方法嗎?但是在擴展JavaScriptObjects的類中不允許使用變量。所以我怎麼能將值lastName和firstName傳遞給對象? – Pero 2012-04-28 12:10:03

+1

兩個createObject方法沒有區別,因爲它是JavascriptObject類的靜態方法。 – krishnakumarp 2012-04-28 12:24:23

+1

對於第二個問題,您擴展JavascriptObject以訪問本機JSON對象。 setter將是本地調用,它將值賦給原生的Javascript變量。我認爲出於這個原因,他們已經提出了一個規則,即疊加類型中不允許使用成員變量。請閱讀https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsOverlay瞭解更多詳情。 – krishnakumarp 2012-04-28 12:29:16