1

我在编译用户界面时遇到问题,当我添加方法 messages.usuario() 时,Firebug 显示错误:TypeError: null has no properties 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());

所以找不到问题的根源,谢谢

4

2 回答 2

2

只要GWT 编译器可以静态确定始终在引用null.nullMethod()上调用特定方法,它就会生成。null在这种情况下,messages已确定始终存在null(使用值setMensajes调用null或根本不调用),因此messages.usuario()将始终抛出 a NullPointerException,并且在生成的 JavaScript 代码中将其转换为 a null.nullMethod()

于 2013-08-05T12:51:48.843 回答
1

从您的代码中,我缺少“增强注入”(请参阅​​ JavaDoc of Ginjector)。换句话说,您需要触发初始注入。创造MyWidgetGinjector是不够的。

void inject(AdministradorMVP entryPoint);一种解决方案是在接口MyWidgetGinjector和调用的类AdministradorMVP中添加一个方法onModuleLoad作为第一个语句(之一)injector.inject(this);:.

于 2013-08-05T14:47:35.183 回答