2

ブラウザごとに異なるビューをサポートする Web アプリケーションを実装しています。たとえば、モバイル ブラウザーでは、UI 要素が少ないユーザーには小さいビューが表示されます。ただし、同じプレゼンターを使用したいと考えています。

私は手元に解決策を持っています - ClientModule にブラウザの種類を検出するロジックを追加します。

if (browser == "iphone") {
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, HomeView.class, HomePresenter.MyProxy.class);
} else if (browser == "ipad") {
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPadHomeView.class, HomePresenter.MyProxy.class);
} else {
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPhoneHomeView.class, HomePresenter.MyProxy.class);
}

GWT プラットフォームで遅延バインディングのような方法を使用できるかどうか疑問に思っています。(ただし、xxx.gwt.xml に遅延バインディング コードを追加するのではなく、GWT プラットフォームの構造に従いたいと思います)。

だから私の質問は:

1) 上記の機能を実装する他の方法はありますか?
2) どの方法が最適で、その理由は?

前もって感謝します!

敬具、
ジァクアン W

4

3 に答える 3

2

あなたが望んでいるようなことをする例が gwt samples フォルダにあります。私のプロジェクトではサンプル コードのバージョンを使用していますが、Gin を使用して clientfactory 機能を処理しています。サンプルは mobilewebapp と呼ばれます。.gwt.xml で formfactor メソッドを使用して、使用しているシステムを特定する必要があります。この場合、デスクトップ、モバイル、タブレットに分類されます。その後、gwt.xml で、フォーム ファクターに基づいてクライアント ファクトリをトレード アウトします。代わりに、ジン モデルをトレード アウトします。ここにmobilwebappのソースへのリンクがあります

于 2012-03-22T14:25:41.850 に答える
1

GWT では、カスタム ユーザー エージェント タイプを設定できません。gecko、gecko1_7、safari、IE6、IE7、IE8、operaのセットに制限されています。

そうは言っても、ユーザー エージェントに直接アクセスし、それに応じてWindow.Navigator.getUserAgent()またはプロパティ プロバイダーを介して切り替えるようにロジックを設定できます。

MVPの GWT でモバイル ブラウザー検出を行う方法については、この同様の質問を参照してください。

于 2012-03-22T03:36:44.110 に答える
0

良い情報源であるgwtp googleグループをチェックしてください.誰かがそこに酒の問題に関する彼の努力についてのpdfを投稿しました. とにかく、私の記憶が正しければ、彼はプレゼンターとビューを備えたクライアントごとに複数の gin モジュールを保持し、ロード時にカスタム js コードを実行してから、正しいモジュールを ginClinet クラスにインストールします。

于 2012-03-23T10:02:01.893 に答える