2012-01-17 4 views

答えて

7

GWT.createは、遅延バインディングに使用されます。これにより、ユーザーのブラウザに基づいて同じサービスの異なる実装を提供することができます。あなただけの新しい経由でそれを作成し、あなたのサービスの複数の実装を持っている必要がない場合

Why use GWT.create() instead of new?

:次の質問を参照してください!

1

GWTは、RMIのようにサービスを作成することによって動作します。ここでは、クライアントパッケージにあるSomeClientServiceサービスを作成しています。これには、サーバー側と呼ぶことができるすべての機能が含まれています。

1

GWT.createは異なる方法で動作します:

  • それはGWTのプロパティに応じて、使用する実装のない宣言がないgwt.xmlファイル内かどうかを確認しようとします。このGWTプロパティは、この場合、ブラウザごとに異なる実装を選択する効果を持つよく知られているユーザエージェントですが、ロギングを無効にするなど、他のものにも使用できます(ログが有効かどうか

例)、それが動作するブラウザでとは何の関係もありません。この場合

<replace-with class="com.x.app.client.ui.base.button.CustomSlicedButtonCellAppearance"> 
    <when-type-is class="com.x.app.client.ui.base.button.CustomButtonCellAppearance" /> 
    <when-property-is name="gxt.css3.enabled" value="false"/> 
    <when-property-is name="gxt.theme" value="themeName" /> 
</replace-with> 

それはCSS3がない場合のみGWT.create(CustomButtonCellAppearance.class)への呼び出しのためCustomSlicedButtonCellAppearanceを使用します。サポートされ、テーマに対応しています。 「when-property-is」はオプションであり、指定されていない場合は、指定されたインタフェースに対して常にその実装を使用することに注意してください。

  • また、ジェネレータも検索されます。この場合、通常、createメソッドに渡されたインターフェイスに存在するアノテーションに基づいて、GWTコンパイル時(またはdevmode)に新しいクラスが生成されます。

例:

<generate-with class="org.fusesource.restygwt.rebind.RestServiceGenerator"> 
    <when-type-assignable class="org.fusesource.restygwt.client.RestService" /> 
</generate-with> 

この場合RestServiceGeneratorは、リクエストを送信するためのコードを生成します。 UIBinderが動作するもう1つの例は、インターフェイス内の注釈を使用するほか、ui.xmlファイル内の内容に基づいてコードを生成します。

  • 何の宣言はGWT.createメソッドに渡されたクラス/インタフェースと一致しない場合、それは(インタフェースの場合には、それは失敗します)、そのクラスに新しい設定をしようとします。

gwtの宣言。後で処理される他の宣言によってxmlファイルを上書きすることができます。したがって、ルールを宣言するモジュールを使用している場合は、元の宣言を含むモジュールの継承宣言の後に新しいルールを宣言することによってルールを変更できます。

関連する問題