我使用Flex 4.5、Java、BlazeDS和Spring开发了一个web应用程序。
我刚刚发现,当我从服务器获取一个集合(java.util.Set)作为ArrayCollection,在Flex web应用程序中对ArrayCollection进行排序并将其发送回服务器时,该集合被服务器接收为未排序的java.util.Set。
关于我如何保持集合排序时发送到服务器的任何建议?
您需要在AS端使用一个对象,在Java端使用一个Map。在AS中,将数组集合中的所有元素放在一个对象中,就像这样
var list:ArrayCollection = new ArrayCollection();
var obj:Object = new Object();
list.addItem("test");
list.addItem("test2");
for(var i=0;i<list.length;i++){
obj[i] = list.getItemAt(i);
}
之后,将对象发送到Java端——一个AS对象将被序列化为Java Map。在服务器端,您将把位置作为映射中的键,因此您将能够重新构建顺序(Java代码很简单,因此我不打算在这里写下来)。
您可以使用SortedSet
。
-> http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html
为什么需要在运输中进行排序?我只会在服务器接收到它时对它进行排序。