Apache flex 使用[RemoteClass]填充ArrayCollection属性
好的,我正在通过WebOrb将一个复杂对象从.NET库传递到Flex应用程序。 为了自动翻译,我使用[RemoteClass]元数据标记,如下所示:Apache flex 使用[RemoteClass]填充ArrayCollection属性,apache-flex,actionscript,remoting,arraycollection,remoteobject,Apache Flex,Actionscript,Remoting,Arraycollection,Remoteobject,好的,我正在通过WebOrb将一个复杂对象从.NET库传递到Flex应用程序。 为了自动翻译,我使用[RemoteClass]元数据标记,如下所示: [RemoteClass(alias="test.PlanVO")] public class Plan { [SyncId] public var id:int; public var Name:String; } 在我尝试扩展Plan类以包含一个复杂项数组之前,这是非常好的: .NET: 在这种情况下,即使.NET库
[RemoteClass(alias="test.PlanVO")]
public class Plan
{
[SyncId]
public var id:int;
public var Name:String;
}
在我尝试扩展Plan类以包含一个复杂项数组之前,这是非常好的:
.NET:
在这种情况下,即使.NET库返回子级,ActionScript计划类的children属性也为null
我已尝试将“子对象”字段更改为如下属性:
private var _children:ArrayCollection;
public function get children():ArrayCollection
{
return _children;
}
public function set children(o:*):void
{
if(o is ArrayCollection)
_children = o;
else if(o is Array)
_children = new ArrayCollection(o);
else
_children = null;
}
但是set函数从未被调用
我该怎么做才能让孩子们以这种方式进入我的Flex应用程序
谢谢 set方法从未调用,这对我来说并不奇怪。从理论上讲,对象应该从服务器返回,并且已经设置了项 也就是说,我不认为ArrayCollection会与服务器端对象匹配。尝试在Flex中使用数组。在.NEt中,您应该使用受支持的类型之一。若列表是IList的一个实现,那个么您可能就没事了
这是一个数组!当然多啊!!!非常感谢,只需从ArrayCollection中更改它就可以了!很乐意帮忙!如果需要ArrayCollection,则始终可以添加一个方法(如getChildrenAsArrayCollection)来为您进行转换。但是,在向Flex类添加新属性时要小心,因为它可能会干扰自动AMF转换。
[RemoteClass(alias="test.PlanVO")]
public class Plan
{
[SyncId]
public var id:int;
public var Name:String;
public var children:ArrayCollection;
}
[RemoteClass(alias="test.PlanElementVO")]
public class PlanElement
{
public var elementName:String;
}
private var _children:ArrayCollection;
public function get children():ArrayCollection
{
return _children;
}
public function set children(o:*):void
{
if(o is ArrayCollection)
_children = o;
else if(o is Array)
_children = new ArrayCollection(o);
else
_children = null;
}