我有一个新项目,我在其中使用 GWT 视图,如 Composite 等。
ProductList
我已经使用 GinInjector注入了主菜单中的项目(如下所示)。这很好用!
我想在某个地方从一个小组件引用我的主菜单中的一个项目,以便对其进行更新。我尝试以这种方式注入它:
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 属性除外)。