1

重複するコード/クラスを減らすために、1つの所有者クラスに対してのみ複数のXMLテンプレートを使用しようとしました。公式のGWTガイドはこれを行う方法を指摘しています。

   public class FooPickerDisplay extends Composite{
     @UiTemplate("RedFooPicker.ui.xml")
     interface RedBinder extends UiBinder<Widget, FooPickerDisplay> {}
     private static RedBinder redBinder = GWT.create(RedBinder.class);

     @UiTemplate("BlueFooPicker.ui.xml")
     interface BlueBinder extends UiBinder<Widget, FooPickerDisplay> {}
     private static BlueBinder blueBinder = GWT.create(BlueBinder.class);

     @UiField Button button1;
   }

'@UiField'はコンパイルエラーを引き起こし、「フィールドbutton1にはテンプレートファイルBlueFooPicker.ui.xmlに対応するフィールドがありません」と表示されます。

私のRedFooPicker.ui.xmlとBlueFooPicker.ui.xmlの内容はまったく異なるため、RedFooPicker.ui.xmlにはUiField = "button1"がありますが、BlueFooPicker.ui.xmlにはbutton1がありません。

だから私の質問は、この種のエラーを引き起こすことなく、同じ所有者クラスに対してまったく異なる内容の複数のXMLテンプレートを使用できる方法があるかどうかです。

4

1 に答える 1

3

いいえ、それぞれUiBinderが別個の所有者クラスで動作する必要があります。ただし、いずれかの内部クラスを簡単に作成できますUiBinder。ドキュメントの例は、両方を同時にではなく、どちらか一方を使用することに関するものです。

ところで、重複を減らすには、物事を再利用可能なウィジェットに抽象化することをお勧めします。

于 2012-10-03T22:58:45.410 に答える