【发布时间】:2011-03-24 22:36:01
【问题描述】:
我有一个新项目,我正在使用 GWT-Views,如 Composite 等。
我已经使用 GinInjector 注入了主菜单中的项目(如下面的ProductList)。这很好用!
我想在某个地方从一个小组件引用我的主菜单中的一个项目,以便对其进行更新。我尝试以这种方式注入它:
public class ProductForm extends Composite {
...
@Inject
ProductList list;
....
}
但是当我使用list 时,我总是得到null。其中,ProductList 是这样定义的:
public class MyModule extends AbstractGinModule {
...
@Override
protected void configure() {
bind(ProductList.class).asEagerSingleton();
bind(ProductForm.class).asEagerSingleton();
}
...
}
知道我做错了什么吗?!
解决方案: 我没有提到 ProductForm 是使用 UIBinder 的 @UIField 标记的 ProductList 的一个元素,因此注入它会创建一个新对象,而不是使用 UIBinder 创建的那个。
我必须重组我的代码以包含演示者和事件总线,这样就不需要视图之间的直接引用(@UIField 属性除外)。
【问题讨论】:
-
请向我们展示您获取 ProductList 对象的代码。
-
您的问题得到解答了吗?
标签: gwt dependency-injection gwt2 gwt-gin