1

GAE と GWT openlayers ライブラリを使用して、マップを含む Web サイトを作成しようとしています。SiteNameWidget.ui.xml ファイルで MapWidget を使用して実装しようとしていますが、以下のエラーが発生します。

RootPanel.get().add(MapWidget) アプローチを使用してなんとか機能させることができましたが、この方法でレイアウトを操作する方が簡単なように見えるので、XML ファイル アプローチを使用できるようにしたいと考えています。

誰?

org.gwtopenmaps.openlayers.client.MapWidget には、デフォルト (ゼロ引数) コンストラクターがありません。これを修正するには、UiBinder の所有者で @UiFactory メソッドを定義するか、MapWidget のコンストラクターに @UiConstructor で注釈を付けます。

4

1 に答える 1

0

つまり、MapWidget は引数を使用してのみインスタンス化できるため、ビューで @UiField として宣言し、GWT に依存してデフォルト コンストラクターを使用してインスタンス化することはできません。

代わりに、コンストラクター (ウィジェットを特殊化する場合) または MapWidget を適切にインスタンス化するために呼び出されるファクトリ メソッド (この場合は引数として MapOptions を使用) のいずれかを提供する必要があります。

たとえば、次を追加します。

@UiFactory MapWidget createMapWidget() {  // The method name is irrelevant
   MapOptions opts = MapOptions.newInstance();
   options.setScrollWheel(false);         // Some sample customization. You may use fields initialized in your actual view constructor (which is called before) to do so.
   return new MapWidget(opts);
}

http://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder?#Using_a_widgetを参照してください。

于 2013-03-26T18:47:23.023 に答える