如何在GWT中手动创建JavaScriptObject?

问题描述:

我怎么能手工创建一个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。 请帮忙!

你应该可以做到这一点?

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