如何在GWT中调用@UiField字段的方法
这是我的课如何在GWT中调用@UiField字段的方法,gwt,uibinder,Gwt,Uibinder,这是我的课 public class PersonView extends Composite{ private Person person; @UiField FirstnameView firstnameView; @UiField LastnameView lastnameView; public PersonView(Person person) { setData(person); } public
public class PersonView extends Composite{
private Person person;
@UiField
FirstnameView firstnameView;
@UiField
LastnameView lastnameView;
public PersonView(Person person) {
setData(person);
}
public void setData(Person person) {
firstnameView.setData(person.getFirstname());
lastnameView.setData(person.getLastname());
}
}
public class FirstnameView extends Composite{
private Firstname firstname;
@UiField
TextBox firstnameTextBox;
public FirstnameView() {
}
public void setData(Firstname firstname) {
firstnameTextBox.setValue(firstname.getFirstname());
}
}
public class LastnameView extends Composite{
private Lastname lastname;
@UiField
TextBox lastnameTextBox;
public LastnameView() {
}
public void setData(Lastname lastname) {
lastnameTextBox.setValue(lastname.getLastname());
}
}
我的问题是,当我调用方法setData(person)
时,我得到以下错误
java.lang.NullPointerException: null in the line `firstnameView.setData(person.getFirstname())`
我认为
@UiField FirstnameView FirstnameView
(还有lastnameView
)不会创建对象。我真的不明白gwt在这种情况下是如何工作的。请帮助我解析它并设置数据。@UiField
s仅在调用UiBinder
实例上的initAndBindUi
时“注入”,并以@UiField
s作为参数传递实例
换句话说,在调用setData()
之前,您的PersonView
构造函数应该先初始化UiBinder
实例并调用binder.initAndBindUi(this)