我们的应用程序使用 GIN 动态实例化其 GWT 资源包。这样做是为了在运行时为不同的显示模式加载不同的样式表。一般来说,这意味着我可以使用类似MyApp.ginjector.getResources()
而不是标准的东西来创建资源的单例实例GWT.create(MyAppResources.class)
。
这适用于除 UiBinder 代码之外的所有内容。我们一直在使用<ui:with ref="res" type="com.company.MyAppResources" />
,我希望MyAppResources
使用 GIN 而不是GWT.create
.
根据GWT UiBinder 文档,有两种方法可以处理这个问题。在组件中使用 a@UiField(provided=true)
或 a @UiFactory
。这两种方法都是不可取的,因为它们要求我团队中的人(包括我自己)记住将这个样板代码放入每个小部件中。更糟糕的是,如果省略了创建代码,一切似乎仍然有效,因为GWT.create
将创建资源的一个实例,而不是我们想要的。
我正在寻找一种创建某种全局@UiFactory
方法的方法,我的所有组件都将使用该方法,它将委托给 GIN。或者,某种挂钩GWT.create
特定类并让客户端运行时代码创建实例的方法也可以,因为我可以将对象创建委托给我的 static Ginjector
。