编译用户界面时出现问题,当我添加方法messages.usuario()时,Firebug显示错误:TypeError:null没有属性 lblUsuario = new Label_2(null.nullMethod());这是我班上的代码:
public class AdministradorMVP implements EntryPoint {
private MessageConstants messages;
@Inject
public void setMensajes(MessageConstants mensajes) {
this.messages = mensajes;
}
private final MyWidgetGinjector injector = GWT.create(MyWidgetGinjector.class);
private Place defaultPlace = new SignInPlace("Admin");
private SimplePanel appWidget = new SimplePanel();
/**
* This is the entry point method.
*/
Label lblUsuario = new Label(messages.usuario());
Label lblNombre = new Label(messages.nombre());
所以我找不到问题的根源,谢谢
答案 0 :(得分:2)
只要GWT编译器可以静态地确定始终在null.nullMethod()
引用上调用特定方法,它就会生成null
。在这种情况下,messages
已被确定为始终为null
(setMensajes
被调用null
值或根本未被调用,因此{{1}总是抛出messages.usuario()
,并在生成的JavaScript代码中将其翻译为NullPointerException
。
答案 1 :(得分:1)
从你的代码中我错过了'注射注射液'(参见JavaDoc of Ginjector)。换句话说,您需要触发初始注入。创建MyWidgetGinjector
是不够的。
一种解决方案是将方法void inject(AdministradorMVP entryPoint);
添加到接口MyWidgetGinjector
和AdministradorMVP
中的onModuleLoad
类中,将其作为(第一个)第一个语句中的一个:{{ 1}}。