GWT null没有属性
我在编译用户界面时遇到了一个问题,当我添加一个方法messages.usuario()时,Firebug显示错误:TypeError:null没有属性 lblUsuario=newlabel_2(null.nullMethod());这是我的班级代码: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
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
。你是最棒的,非常感谢你,兄弟,你的方法非常有效