如何在Flex ActionScript中使用[RemoteClass]可以将其用于自定义数据绑定吗?

前端之家收集整理的这篇文章主要介绍了如何在Flex ActionScript中使用[RemoteClass]可以将其用于自定义数据绑定吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Actionscript支持BlazeDS中使用的[RemoteClass]元数据标签,用于提供数据绑定提示,用于将AMF二进制对象从 Java编组到BlazeDS.

例如:

Java的:
包装样品;

  1. public class UserInfo
  2. {
  3. private String userName;
  4.  
  5. public String getUserName()
  6. {
  7. return userName;
  8. }
  9.  
  10. public void setUserName(String value)
  11. {
  12. userName = value;
  13. }
  14. }

动作:

  1. [Bindable]
  2. [RemoteClass(alias="sample.UserInfo")]
  3. public class UserInfo
  4. {
  5. public var userName:String=”";
  6. }

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

解决方法

[RemoteClass(alias =“com.example.MyClass”)]是调用 flash.net.registerClassAlias()的Flex简写:
  1. public function registerClassAlias(aliasName:String,classObject:Class):void

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

getClassByAlias(aliasname的:字符串):类
查找一个以前通过调用registerClassAlias()方法注册别名的类.

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

例如,ObjectCodec.as的以下代码片段似乎通过使用“@”来检索别名属性

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

猜你在找的Flex相关文章