如何在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();
非常感谢。我有两个问题:1)你和这个版本有什么不同 - > Person a = Person.createObject()cast(); 2)我如何将值传递给人物?我应该创建setter方法吗?但是在扩展JavaScriptObjects的类中不允许使用变量。所以我怎么能将值lastName和firstName传递给对象? – Pero 2012-04-28 12:10:03
两个createObject方法没有区别,因为它是JavascriptObject类的静态方法。 – krishnakumarp 2012-04-28 12:24:23
对于第二个问题,您扩展JavascriptObject以访问本机JSON对象。 setter将是本地调用,它将值赋给原生的Javascript变量。我认为出于这个原因,他们已经提出了一个规则,即叠加类型中不允许使用成员变量。请阅读https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsOverlay了解更多详情。 – krishnakumarp 2012-04-28 12:29:16