`
kaidi0314
  • 浏览: 83242 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Flex 对Java端返回Collection的处理

    博客分类:
  • flex
 
阅读更多
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);
		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()
		{
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics