GWT null没有属性

GWT null没有属性,gwt,internationalization,null,Gwt,Internationalization,Null,我在编译用户界面时遇到了一个问题,当我添加一个方法messages.usuario()时,Firebug显示错误:TypeError:null没有属性 lblUsuario=newlabel_2(null.nullMethod());这是我的班级代码: public class AdministradorMVP implements EntryPoint { private MessageConstants messages; @Inject public void setMens

我在编译用户界面时遇到了一个问题,当我添加一个方法messages.usuario()时,Firebug显示错误:TypeError:null没有属性 lblUsuario=newlabel_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());

所以我找不到问题的根源,谢谢你,只要GWT编译器能够静态地确定某个特定方法总是在
null
引用上被调用,它就会生成
null.nullMethod()
。在这种情况下,
消息
被确定为总是
null
(要么用
null
值调用
setMensajes
,要么根本不调用它),因此
messages.usuario()
将始终抛出
NullPointerException
,并将其转换为
null.nullMethod()
在生成的JavaScript代码中。

在您的代码中,我缺少“boostrap the injection”(请参阅)。换句话说,您需要触发初始注入。创建
MyWidgetGinjector
是不够的


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

问题出在依赖项注入的某个地方(我假设您使用gin/guice或类似的东西)。请为注入添加设置代码。我是J2EE世界的新手,请原谅^^。。。那么设置就是pom.xml中的配置吗?是的,这正是问题所在,但在我们的例子中,usuario()是在MessageConstants类中声明的,代码为:公共接口MessageConstants extends Constants{String usuario();在MessageConstants_ca.properties中,我们有:usuario=Usuari,那么为什么返回null?&感谢您的回答:)请参见Hilbrand的答案:因此,
setMensajes
从未被调用,所以
这个。消息从来没有被分配,并且总是
null
,因此
messages.usuario()
总是抛出一个
NullPointerException
。你是最棒的,非常感谢你,兄弟,你的方法非常有效