[英]How does [RemoteClass] work in Flex Actionscript can I use it for custom data-binding?
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],[RemoteClass]類的自定義數據綁定遠程處理框架(例如,JSON消息傳遞系統) ?
[RemoteClass(alias =“com.example.MyClass”)]是一個用於調用flash.net.registerClassAlias()的Flex簡寫:
public function registerClassAlias(aliasName:String, classObject:Class):void
要在運行時訪問這些已注冊的別名類(要編寫自定義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;
//...
}
[RemoteClass]僅用於Flex端。 它真正做的就是調用flash.net.registerClassAlias()函數來設置本地對象和遠程類名之間的映射。
您可以使用-keep-generated-actionscript
編譯器參數來查看生成的代碼及其工作原理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.