AMF类映射不起作用



我正在构建一个应用程序,使用Flex 4.5和Zend_AMF作为我的AMF端点。

我想映射一个类在PHP中称为请求到一个类在Flex中称为请求。

这是我的php类:

<?php
namespace appweb;
class CRequest{
   public $_explicitType = 'com.site.remote.Request';
   public $stuff1;
   public $stuff2;
}

这是actionscript类:com.site.remote.Request

package com.dreamatique.remoting
{
    [Bindable]
    [RemoteClass(alias="com.site.remote.Request")]
    public class Request
    {
        public var stuff1:String;
        public var stuff2:String;
        public function Request()
        {
        }
    }
}

作为测试,无论请求是什么,我都让端点从PHP端返回CRequest的一个实例。

然后我像这样做一个远程对象调用:

var remoteObject:RemoteObject = new RemoteObject();
remoteObject.endpoint = "http://localhost/to/my/amf/endpoint";
remoteObject.showBusyCursor = true;
remoteObject.source = 'testing';
var op:AbstractOperation = remoteObject.getOperation(null);
op.addEventListener(ResultEvent.RESULT, result);
op.send();
public static function result(event:ResultEvent):void{
    trace(event.result);
    trace(Class(getDefinitionByName(getQualifiedClassName(event.result))));
    Alert.show(event.result.toString());
}

问题是结果返回类型为ObjectProxy而不是Request。我做错了什么?

确保在代码库中至少有一个对该类的引用。

这是一个常见的陷阱,特别是在第一次开发远程调用时,以及在任何地方的任何代码中实际使用该类型之前。

如果类没有被引用,它就不会被编译,因此也不会被注册。

通常,在早期开发期间,我将最终创建一个StaticLinker类:

public class StaticLinks
{
    private var request:Request;
}

然后在我的应用程序中引用:

<s:Script>
   var linker:StaticLinks;
</s:Script>

BTW -您之前的假设是正确的:如果您将类注释为[RemoteObject],则不需要调用registerClass()

你记得注册课程了吗?

import flash.net.registerClassAlias;
flash.net.registerClassAlias("com.site.remote.Request", Request);

相关内容

  • 没有找到相关文章

最新更新