Flex 对Java端返回Collection的处理方法 将Flex与Spring集成后(BlazeDS 与Spring集成指南 ),
第一个面临的问题就是:对于Java端返回的各种Java类型的对象,Flex中能否有相应的数据类型来映射处理,尤其是List、Set、Map及POJO对象值。
在 BlazeDS 与Spring集成指南 例子的基础上,调整相关的测试代码如下:
一、java端
1)JavaSendList.java
2)Person.java
二、flex端
1)flexAcceptList.mxml
2)Person.as
第一个面临的问题就是:对于Java端返回的各种Java类型的对象,Flex中能否有相应的数据类型来映射处理,尤其是List、Set、Map及POJO对象值。
在 BlazeDS 与Spring集成指南 例子的基础上,调整相关的测试代码如下:
一、java端
1)JavaSendList.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class JavaSendList {
public String hello(String var1) {
return "hello " + var1;
}
public String world(String var1) {
return "world " + var1;
}
public Map<String, List> getMap() {
ArrayList list1 = new ArrayList();
list1.add("value11");
list1.add("value12");
list1.add("value13");
ArrayList list2 = new ArrayList();
list2.add("value21");
list2.add("value22");
list2.add("value23");
ArrayList list3 = new ArrayList();
list3.add("value31");
list3.add
("value32");
list3.add("value33");
HashMap<String, List> map = new HashMap<String, List>();
map.put("key1", list1);
map.put("key2", list2);
map.put("key3", list3);
return
map;
}
public ArrayList getList() {
ArrayList list = new ArrayList();
Person p1 = new Person();
p1.setName("name1");
p1.setPass("pass1");
Person p2 = new Person();
p2.setName("name2");
p2.setPass("pass2");
Person p3 = new Person();
p3.setName("name3");
p3.setPass("pass3");
list.add(p1);
list.add(p2);
list.add(p3);
return list;
}
public Set getSet() {
HashSet set = new HashSet();
Person p1 = new Person();
p1.setName("name1");
p1.setPass("pass1");
Person p2 = new Person();
p2.setName("name2");
p2.setPass("pass2");
Person p3 = new Person();
p3.setName("name3");
p3.setPass("pass3");
set.add(p1);
set.add(p2);
set.add(p3);
return set;
}
}
2)Person.java
public class Person {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
private String name;
private String pass;
}
二、flex端
1)flexAcceptList.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import Person;
[Bindable]
public var person:Person;
[Bindable]
public var map:ArrayCollection=null;
function sayHello(event:Event):void {
// var inputVar:String=inputStr.text;
// test1.hello(inputVar);
}
function sayWorld(event:Event):void {
// var inputVar:String=inputStr.text;
// test1.world(inputVar);
}
private function sayHelloResult(event:ResultEvent):void {
// result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
private function sayWorldResult(event:ResultEvent):void {
// result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
private function getMapResult(event:ResultEvent):void {
for (var key:String in event.result) {
var list:ArrayCollection=event.result[key] as ArrayCollection;
for (var key1:Object in list) {
Alert.show("map item key is: " + key + " value is: " + key1);
}
}
}
private function getList():void {
// test1.getList();
}
private function getListResult(event:ResultEvent):void {
var ac:ArrayCollection=event.result as ArrayCollection;
for (var i:int=0; i < ac.length; i++) {
var p1:Person=ac.getItemAt(i) as Person;
Alert.show("list item name is: " + p1.name+" \n another usage : "+ac.getItemAt(i).name);
}
}
private function getSet():void {
// test1.getSet();
}
private function getSetResult(event:ResultEvent):void {
var ac:ArrayCollection=event.result as ArrayCollection;
for (var i:int=0; i < ac.length; i++) {
var p1:Person=ac.getItemAt(i) as Person;
Alert.show("set item name is: " + p1.name);
}
}
]]>
</fx:Script>
</s:Application>
2)Person.as
package
{
[Bindable]
[RemoteClass(alias="com.yeeach.Person")]
public class Person
{
public var name:String;
public var pass:String;
public function Person()
{
}
}
}