0

フィールドレベルのインジェクションを行おうとしているので、コントローラーがインスタンス化されるときに「モデル」を渡す必要はありません。

UserController controller = new UserController(/*No need to pass models here*/);

ただし、私のアプリケーションは NullPointerException をスローします。ここに私のコード:

ユーザーコントローラー.java

    public class UserController implements Controller {
        @Inject private UserModel model;
        public UserController() {
          model.doSomething(); // NullPointerException
        }
    }

ClientGinModule.java

public class ClientGinModule extends AbstractGinModule {
    @Override
    protected void configure() {
        bind(UserModel.class).in(Singleton.class);
    }
}

何が問題なのですか?

4

2 に答える 2

1

ガイドで使用

UserController controller = injector.getInstance(UserController.class);

ジンでの使用:

// Declare a method returning a UserController on your interface extending Ginjector
public UserController getUserController();

// When you need the controller, just call:
injector.getUserController();

完全に注入されたコントローラーを取得します。

于 2012-05-02T17:01:15.487 に答える
0

コンストラクmodelターがまだ実行されている間、フィールドは null になります。UserControllerオブジェクトが完全に作成された瞬間に GIN によって注入されます。Here GWT GIN Field Level Injectionは、それについての素晴らしい説明を見つけることができます。

于 2012-05-02T14:32:42.103 に答える