1

ユーザー インターフェイスをコンパイルするときに問題が発生しました。メソッド 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());

問題の原因がわかりません、ありがとうございます

4

2 に答える 2

2

GWT コンパイラnull.nullMethod()は、特定のメソッドが常に参照で呼び出されることを静的に判断できる場合は常に生成しnullます。この場合、messagesは常にnull(値を指定setMensajesして呼び出されるかnull、まったく呼び出されない) と判断されているため、messages.usuario()常に がスローされ、生成された JavaScript コードで にNullPointerException変換されます。null.nullMethod()

于 2013-08-05T12:51:48.843 に答える
1

あなたのコードから、「インジェクションのブーストラップ」がありません(Ginjector の JavaDoc を参照)。つまり、最初の注入をトリガーして実行する必要があります。作成するMyWidgetGinjectorだけでは不十分です。

1 つの解決策は、最初のステートメント (の 1 つ) として呼び出し中void inject(AdministradorMVP entryPoint);のインターフェイスMyWidgetGinjectorとクラスAdministradorMVPにメソッドを追加することです: 。onModuleLoadinjector.inject(this);

于 2013-08-05T14:47:35.183 に答える