【问题标题】:How does [RemoteClass] work in Flex Actionscript can I use it for custom data-binding?[RemoteClass] 在 Flex Actionscript 中如何工作 我可以将它用于自定义数据绑定吗?
【发布时间】:2010-12-12 21:38:35
【问题描述】:

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;
    }
}

动作脚本:

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

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

【问题讨论】:

    标签: apache-flex data-binding actionscript remoting blazeds


    【解决方案1】:

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

    public function registerClassAlias(aliasName:String, classObject:Class):void
    

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

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

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

    例如,ObjectCodec.as 的以下代码 sn-p 似乎使用“@”检索别名属性:

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

    【讨论】:

    【解决方案2】:

    [RemoteClass] 仅用于 Flex 端。它真正做的只是调用flash.net.registerClassAlias() 函数来设置本地对象和远程类名之间的映射。

    【讨论】:

    • 那么有没有办法访问 flash.net.registerClassAlias() 列表。我正在尝试使用 JSON 消息编写自己的自定义远程处理,因此我没有使用 Flex 的生产者/消费者或 IDataInput、IDataOutput 接口。我需要能够从远程 java 类名中查找 Flex 类并构造它。
    【解决方案3】:

    您可以使用-keep-generated-actionscript 编译器参数来查看生成了什么代码以及它是如何工作的。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2012-10-18
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多