問題タブ [gwt-gin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gwt - GWT ウィジェット/ライブラリの Deferred Binding/GIN
ライブラリ/ウィジェットでの遅延バインディングおよび/または依存性注入の概念に少し苦労しています。次の問題に対する最善のアプローチを考え出そうとしています。データを取り込んで表示する視覚化ウィジェット (コンポジット) を実装したいと考えています。
データを取得する方法を実際の視覚化部分から分離したいと考えています。そこで、次のような汎用インターフェイス「DataSource」を追加しました。
ウィジェットにセッターを追加します。
http のようなデータソースをサポートするために、DataSource インターフェイスを実装し、デフォルトのコンストラクターで URL を取る抽象クラスも追加しました。
私の特定の DataSouce は、この抽象クラスを拡張し、インターフェイスの fetch メソッドを実装します。
これはうまくいきます。MyDataSource クラスのインスタンスを作成して、それをウィジェットのセッターに渡すことができます。ここで、ウィジェットをある程度構成可能にしたいと考えています。これは、依存性注入または遅延バインディングのいずれかによって実行できることを知っています。
したがって、1 つのアプローチは、ウィジェットのユーザーがモジュール XML ファイルで DataSource を設定できるようにすることです (gwt-log ライブラリで行われる方法と同様: http://code.google.com/p/gwt- log/source/browse/trunk/Log/src/com/allen_sauer/gwt/log/gwt-log-impl.gwt.xml )
ただし、URL を MyDataSource のコンストラクターに渡すことで状態が得られ、これが遅延バインディングでどのように機能するかがわからないため、それが可能かどうかはわかりません。余談ですが、モジュールの XML ファイルにも URL を設定することは可能でしょうか?
このウィジェット/ライブラリを使用する人が独自の DataSource を実装してウィジェットに渡すことができるかどうかも心配です (遅延バインディングに干渉しませんか?)
別の解決策は、視覚化ウィジェット/ライブラリを使用する親アプリケーションで依存性注入を使用することだと思います (どのように URL を渡すことができますか? おそらく、Factory を注入する必要がありますか?)
これら 2 つの解決策のどちらが優れていますか?一般的に、この問題を解決するために遅延バインディングまたは GIN を使用することは理にかなっていますか?
前もって感謝します
ウエミット
gwt - gwt 2.1 で依存性注入が機能しない
Composite などの GWT ビューを使用している新しいプロジェクトがあります。
ProductList
GinInjector を使用して、メイン メニュー (以下のような) にアイテムを注入しました。これはうまくいきます!
小さなコンポーネントからメイン メニューの項目への参照を更新するためにどこかで参照したいと考えています。私はこの方法でそれを注入しようとします:
しかし、私が を使用すると、list
常にnull
. これにより、ProductList
は次のように定義されます。
私が間違っていることは何ですか?
解決策: ProductForm が UIBinder の @UIField タグを使用する ProductList の要素であることを言い忘れたため、それを挿入すると、UIBinder を使用して作成されたオブジェクトではなく、新しいオブジェクトが作成されます。
@UIField 属性以外のビュー間の直接参照が不要になるように、プレゼンターとイベント バスを含めるようにコードを再構築する必要がありました。
gwt - GWT で Gin を使用する長所と短所
ClientFactory を使用する場合と比較して、GWT で Gin を使用する場合の長所と短所は何ですか?
gwt - Google Gin 1.5 の新機能
最近リリースされたGoogle Gin (1.5)のバージョンを試した人はいますか? リリースの新機能と GWT の使用経験を知りたいです。
gwt - 匿名内部クラス(GIN)に注入する
私はこのようなものを持っています:
抽象クラスExtReceiverの匿名内部クラスです。ExtReceiverは、私が提供したいerrorHandlerでエラーを処理するためのものです。
新しい演算子を使用しているため、これが機能しない理由を理解しています。しかし、どうすればこのようなことができますか?私はその匿名のクラスを持ちたいので、それを自分のファイルなどに入れたくありません。そのerrorHandlerをどのように注入できますか?staticInjectionsについて考えましたが、これも機能しないように見えました(おそらく、匿名クラスを実行して作成した継承のためです)
通常のGuiceとは逆に、injector.getInstance()の呼び出しはわかりません。
詳細情報:これはrequestFactory呼び出しです
gwt - Deferred Binding によって生成されたクラス内の Gin インジェクション
ここに問題があります。GWT の Deferred Binding によって生成されたコードがあり、このコード内で Gin インジェクションを使用したいと考えています。
最初に、生成されたクラスに @Inject アノテーションを付けたプライベート コンストラクターを配置しようとしましたが、GWT は、パブリックな noargs コンストラクターがないことを訴えました。いずれにせよ、バインドなしで抽象的なものを注入しようとしたときにエラーが発生し、実行時に型リテラルを使用できないため、おそらくバインドできなかったように感じました。
私の次の試みは、クラス自体の内部で Ginjector と Gin モジュールを生成することでしたが、Ginjector アノテーションの Gin モジュールが見つからないというエラーが発生し、混乱しました。さらに、これにより、外部依存関係ではなく、生成される可能性のあるものへの注入が分離されます。
いずれにしても、そのようなことを試みた人はいますか?誰かアドバイスはありますか?
gwt - GWT ActivityMapper ボイラープレートの削除
私は GWT のアクティビティと場所のフレームワークを使用してアプリケーションを構築していますが、順調に進んでいます。私を悩ませているのは、ActivityMapper
実装が (1) アプリケーション内のすべてのビューを受け取る (2) 受け取った場所に基づいてアクティビティをインスタンス化するための巨大な if/else ブロックを含むことです。閲覧数が増えれば増えるほど悪くなる。
私はすでにGinを使用していますが、ここでどのように使用できるかわかりません。
からボイラープレートを削減または削除するにはどうすればよいActivityMapper
ですか?
gwt - GWTとGinを使用したクロスアクティビティ参照
アクティビティと場所を使用するGWTMVPアプリケーションがあります。これは、明らかにThomas Broyerの作品の一部に基づいた、Mauro Bertapelleのサンプル(このスレッド内)に触発されています。
問題は次のとおりです。LoginActivityにRPC呼び出しを行わせ、ログインが成功するとユーザーを返します。このユーザーには役割があります(例:管理者、通常のユーザー、ゲスト)。NavigatorViewを含むいくつかのビューとアクティビティは、表示または実行する内容をこの役割に依存しています。このユーザーインスタンスを他のアクティビティに移動するにはどうすればよいですか?
私はClientFactoryを持っていません。インジェクション(Gin)は、アクティビティ/プレゼンターを提供するActivityProviderのビューをインスタンス化するために使用され、ActivityProviderはActivityMapperにインジェクトされます。したがって、これはGinの質問に還元される可能性があります。必要な場所でユーザー参照を取得するにはどうすればよいですか?これは、MVPのグローバル参照に関するこのSOの質問に似ているようです。
私をジン初心者と考えてください、これはそれを使用する私の最初の試みです。これを実現するための「Ginの方法」があると思いますが、これを行うための最良の方法を知るのに十分なGinの知識はありません(Ginを使用する必要がある場合)。
どうもありがとう。
編集1: SOで同様の質問を検索するために最善を尽くしたにもかかわらず、私はこの質問を見つけました。これは私のものとほとんど同じです(「関連」リンクを検索するためのSOアルゴリズムは検索よりも優れていますか?)。デビッドのジンの答えは正しい方向に進んでいると思います。
EventBusソリューションは可能ではないと思います。プレイスが変更されるたびにアクティビティをインスタンス化するというGoogleのガイドラインに従っているため、1つのイベントだけでは不十分です。
gwt - GWTとGuiceを使用したジンの問題。--java.lang.RuntimeException:遅延バインディングが失敗しました
Ginの使用に問題があります。これが簡単な例です。
次に、ここにモジュールがあります
およびエントリポイント
そしてモジュールxmlファイル
このコードを実行した後、例外が発生しました:
エラー:遅延バインディングを介して「com.mySampleApplication.client.MySampleApplication」のインスタンスを作成できませんでした。java.lang.RuntimeException:'com.mySampleApplication.client.gin.AppInjector'の遅延バインディングが失敗しました(必要なモジュールを継承するのを忘れましたか?)。
gin1.0とguice2.0で試してみました。
ご意見をお聞かせください。
ありがとう。
java - GWTを使用したGinの問題-GWT.create(someClass.class)は、呼び出されるたびに異なるインスタンスを返します
これが私の問題です。私はgwtプロジェクトでGinを使用しており、インスタンスを取得するためにGWT.create(SomeClass.class)を使用していますが、問題は、signletonインスタンスが必要であり、そのためにアプリモジュールでそのクラスをシングルトンにバインドすることです。GWT.create(TemplatePanel.class)を実行するたびに、異なるインスタンスが返されます。なぜですか?これが私のコードのスニペットです。モジュール
インジェクター
TemplatePanel
MainPanel
そしてエントリポイント