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

在 Guice 中使用

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当构造函数仍在运行时,您的字段将为空。UserController它会在对象完全创建后由 GIN 注入。在这里GWT GIN Field Level Injection你可以找到很好的解释。

于 2012-05-02T14:32:42.103 回答