读书人

Flex 对Java端回来Collection的处理

发布时间: 2012-08-21 13:00:21 作者: rapoo

Flex 对Java端返回Collection的处理
Flex 对Java端返回Collection的处理方法 将Flex与Spring集成后(BlazeDS 与Spring集成指南 ),
第一个面临的问题就是:对于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);returnmap;}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(){}}}

读书人网 >flex

热点推荐