我想使用Parsley框架,我想使用GraniteDS进行远程处理。从2.1开始,GraniteDS从您的Java代码生成AS3服务类作为本地代理,我想在Parsley中使用这些类。
我可以用Parsley成功注入服务类但是当我调用他们的任何方法时我得到一个空对象错误
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实例化的服务类。我看到有人推荐a post on the parsley forums:
<parsley:ContextBuilder>
<parsley:FlexConfig type="{UserManagerConfig}"/>
<parsley:RuntimeConfig instances="{[tideContext]}" />
</parsley:ContextBuilder>
...
[Bindable]
private var tideContext:Context = Spring.getInstance().getSpringContext();
但这对我不起作用。我熟悉GraniteDS但不熟悉Parsley所以也许这就是解决方案,但正确应用它是我的头脑。
如果有人使用其他框架(如Swiz或Spring ActionScript),那么请同时传递该解决方案,因为它可能非常相似。
更新: 我通过阅读Granite源代码得知,在我用Parsley注入服务之后(例如bookService),如果我运行
private var tideContext:Context = Spring.getInstance().getSpringContext();
bookService.meta_init("bookService", tideContext);
然后我可以成功使用该服务。所以我想我只需要知道如何通过我在Parsley中声明的所有服务以一种自动的方式做到这一点。
答案 0 :(得分:1)
我会看看Pimento而不是GraniteDS。它也是一个SpiceFactory ActionScript库,比如Parsley