GWT null没有属性

时间:2013-08-05 11:29:00

标签: gwt internationalization null

编译用户界面时出现问题,当我添加方法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());

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

2 个答案:

答案 0 :(得分:2)

只要GWT编译器可以静态地确定始终在null.nullMethod()引用上调用特定方法,它就会生成null。在这种情况下,messages已被确定为始终为nullsetMensajes被调用null值或根本未被调用,因此{{1}总是抛出messages.usuario(),并在生成的JavaScript代码中将其翻译为NullPointerException

答案 1 :(得分:1)

从你的代码中我错过了'注射注射液'(参见JavaDoc of Ginjector)。换句话说,您需要触发初始注入。创建MyWidgetGinjector是不够的。

一种解决方案是将方法void inject(AdministradorMVP entryPoint);添加到接口MyWidgetGinjectorAdministradorMVP中的onModuleLoad类中,将其作为(第一个)第一个语句中的一个:{{ 1}}。