1

このアプリケーションは GIN を使用して、GWT リソース バンドルを動的にインスタンス化します。これは、さまざまな表示モードに対して実行時にさまざまなスタイルシートをロードできるようにするために行われます。MyApp.ginjector.getResources()一般に、これは、標準の ではなく のようなものを使用して、リソースのシングルトン インスタンスを作成できることを意味しますGWT.create(MyAppResources.class)

これは、UiBinder コード以外のすべてでうまく機能します。を使用しており、 のインスタンスをではなく GIN で作成し<ui:with ref="res" type="com.company.MyAppResources" />たいと考えています。MyAppResourcesGWT.create

GWT UiBinder docsによると、これを処理するには 2 つの方法があります。@UiField(provided=true)コンポーネントで aまたは aを使用@UiFactoryします。これらの方法は両方とも、私のチーム (私を含む) のメンバーがこのボイラープレート コードをすべてのウィジェットに忘れずに配置する必要があるため、望ましくありません。さらに悪いことに、作成コードが省略された場合でも、すべてが機能しているように見えGWT.createます。これは、必要なリソースではなく、リソースのインスタンスが作成されるためです。

@UiFactoryすべてのコンポーネントが使用し、GIN に委譲する何らかのグローバル メソッドを作成する方法を探しています。または、特定のクラスにフックしGWT.create、クライアント側のランタイム コードにインスタンスを作成させる何らかの方法も同様に機能し、オブジェクトの作成を static に委譲することができますGinjector

4

1 に答える 1

3

com.company.MyApp静的フィールドを持つ がある場合はginjector、次を使用できます。

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

そして(ginjector.getResources().style().foo()Javaであると仮定して):

<span class="{ginjector.getResources.style.foo}">
于 2012-10-12T23:23:23.020 に答える