[RemoteClass]如何在Flex Actionscript中工作,我可以将它用于自定义数据绑定吗?

Dou*_*kem 10 apache-flex data-binding remoting actionscript blazeds

Actionscript支持在BlazeDS中使用的[RemoteClass]元数据标记,以提供数据绑定提示,以便将AMF二进制对象从Java编组到BlazeDS.

例如:

Java: 包样本;

public class UserInfo
{
    private String userName;

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String value)
    {
        userName = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

动作:

[Bindable]
[RemoteClass(alias="sample.UserInfo")]
public class UserInfo
{
    public var userName:String=”";
}
Run Code Online (Sandbox Code Playgroud)

在BlazeDS框架中如何实现[RemoteClass],你是否可以覆盖该行为并提供可以绑定到Actionscript [Bindable],[RemoteClass]类的自定义数据绑定远程处理框架(例如,JSON消息传递系统) ?

Dou*_*kem 19

[RemoteClass(alias ="com.example.MyClass")]是一个用于调用flash.net.registerClassAlias()的Flex简写:

public function registerClassAlias(aliasName:String, classObject:Class):void
Run Code Online (Sandbox Code Playgroud)

要在运行时访问这些已注册的别名类(要编写自定义JSON数据序列化框架),您可以调用:

getClassByAlias(aliasName:String):Class查找以前通过调用registerClassAlias()方法注册了别名的类.

对于从AS到Java的传出编码,您需要检索别名类名,您可以通过调用flash.utils.describeType()并在Actionscript对象的类上使用"reflection"来查询对象的属性,属性和方法.

例如,ObjectCodec.as的以下代码片段似乎使用"@"检索别名属性:

override protected function encodeComplex(o:Object, b:IBinary, context:IContext=null):void
{
        var desc:XML = describeType(o);
        var classAlias:String = desc.@alias;
        //...
}
Run Code Online (Sandbox Code Playgroud)