【发布时间】:2011-06-12 00:22:43
【问题描述】:
我有一个在 UIBinder 中使用的 InlineLabel 子类。如何通过 GIN 将 PlaceController 注入其中,以便在 UIBinder 中使用小部件? (回想一下,UIBinder 需要一个无参数的构造函数。)
如果这不可能,那么让小部件可以使用 PlaceController 以便小部件在 onClick() 事件期间可以使用它的最简洁方法是什么?
编辑:
我不确定 MVP 是否真的是这种情况下的最佳解决方案(不过,我很高兴你改变主意。)
我将在我的 UIBinder foo.ui.xml 文件中声明数十个这样的 InlineLabel 实例。如果我实现 MVP,这意味着将这些实例中的每一个声明为视图中的 @UiField 成员。当我有这么多的时候,这变得相当笨拙。这就是为什么我希望以半自动的方式将 PlaceController 注入到每个 InlineLabels 中,并且避免手动将它们连接到视图中。
如果有办法将演示者注入到每个 InlineLabels 中也是可以接受的...然后委托可以执行如下操作:
public class MyInlineLabelSubclass {
// ...
public void onClick(ClickEvent event)
{
presenter.labelClicked(this);
}
}
【问题讨论】:
-
您不需要为每个 InlineLabel 提供明确的 @UiField,请参阅我修改后的答案。
标签: gwt dependency-injection uibinder gwt-gin