Java 在UiBinder xml中使用GIN创建的资源

Java 在UiBinder xml中使用GIN创建的资源,java,gwt,guice,uibinder,gwt-gin,Java,Gwt,Guice,Uibinder,Gwt Gin,我们的应用程序使用GIN动态实例化其GWT资源包。这样做是为了在运行时为不同的显示模式加载不同的样式表。一般来说,这意味着我可以使用类似于MyApp.ginject.getResources()的方法来创建资源的单例实例,而不是标准的GWT.create(MyAppResources.class) 这适用于除UiBinder代码之外的所有代码。我们一直在使用,我希望使用GIN而不是GWT.create创建MyAppResources的实例 根据调查,有两种方法来处理这个问题。在组件中使用@UiF

我们的应用程序使用GIN动态实例化其GWT资源包。这样做是为了在运行时为不同的显示模式加载不同的样式表。一般来说,这意味着我可以使用类似于
MyApp.ginject.getResources()
的方法来创建资源的单例实例,而不是标准的
GWT.create(MyAppResources.class)

这适用于除UiBinder代码之外的所有代码。我们一直在使用
,我希望使用GIN而不是
GWT.create创建
MyAppResources
的实例

根据调查,有两种方法来处理这个问题。在组件中使用
@UiField(提供=true)
@UiFactory
。这两种方法都是不可取的,因为它们要求我的团队中的人员(包括我自己)记住将此样板代码放入每个小部件中。更糟糕的是,如果省略了创建代码,一切看起来都会正常工作,因为
GWT.create
将创建我们资源的实例,而不是我们想要的实例


我正在寻找一种创建某种全局
@UiFactory
方法的方法,我的所有组件都将使用这种方法,它将委托给GIN。或者,为特定类连接到
GWT.create
,并让客户端运行时代码创建实例的某种方式也会起作用,因为我可以将对象创建委托给我的静态
ginject

如果您有一个带有静态字段的
com.company.MyApp
,那么您可以使用:

<ui:import field="com.company.MyApp.ginjector" />

哦,这很聪明,我以前从未使用过ui:import。为了保持整洁,您可以创建一个类,明确目的是为UiBinder文件提供样式和其他静态资源。我想到的另一个解决方案是为我们的小部件创建一个公共基类(例如MyAppComposite),它可以为资源或潜在的小部件提供UiFactory方法,是否需要专门创建。是否已替换为?我使用的是GWT 2.5.1,我让它与No.一起工作。
是关于使用给定类型的
GWT.create()
d实例来设置一个(可能是隐式的)
@UiField
(如果它是
@UiField(提供=true)
)<代码>
是关于访问给定类中静态字段(常量)的值。
<span class="{ginjector.getResources.style.foo}">