0

Parsley フレームワークを使用したいと考えており、GraniteDS をリモート処理に使用したいと考えています。2.1 の時点で、GraniteDS はローカル プロキシとして Java コードから AS3 サービス クラスを生成します。これらのクラスを Parsley で使用したいと考えています。

Parsley を使用してサービス クラスを正常に挿入できますが、それらのメソッドのいずれかを呼び出すと、null オブジェクト エラーが発生します。

at org.granite.tide::Component/http://www.adobe.com/2006/actionscript/flash/proxy::callProperty()[C:\workspace_\graniteds\as3\framework\org\granite\tide\Component.as:172]
at library::BookServiceBase/get()[C:\Documents and Settings\MedLineTec\Adobe Flash Builder 4\library\src\library\BookServiceBase.as:36]

これは、Parsley が、GraniteDS リモート処理を実行するために関連する「コンテキスト」を実際に注入せずに、サービス クラスのインスタンスを作成しているためです。パセリがインスタンス化するサービス クラスに GraniteDS コンテキストを与える方法を理解する必要があります。パセリのフォーラムで、誰かが推奨している投稿を見ました。

<parsley:ContextBuilder>
      <parsley:FlexConfig type="{UserManagerConfig}"/>
      <parsley:RuntimeConfig instances="{[tideContext]}" />
</parsley:ContextBuilder>

...

[Bindable]
private var tideContext:Context = Spring.getInstance().getSpringContext(); 

しかし、それは私にはうまくいきませんでした。私はGraniteDSには精通していますが、パセリには精通していないので、これが解決策かもしれませんが、正しく適用することは私の頭の上にあります.

誰かが Swiz や Spring ActionScript などの別のフレームワークを使用している場合は、非常に似ている可能性があるため、その解決策も教えてください。

更新:Granite のソース コードを読んで、Parsley を使用してサービス (bookService など) を挿入した後、

private var tideContext:Context = Spring.getInstance().getSpringContext(); 
bookService.meta_init("bookService", tideContext);

その後、サービスを正常に使用できます。したがって、Parsley で宣言するすべてのサービスを使用して、これを一種の自動的な方法で行う方法を知る必要があるだけだと思います。

4

1 に答える 1

1

GraniteDS の代わりに Pimento を検討します。これも、Parsley のように、SpiceFactory の ActionScript ライブラリです。

于 2010-11-21T11:27:09.407 に答える