Flex 对Java端返回Collection的处理方法
将Flex与Spring集成后(BlazeDS 与Spring集成指南 ),第一个面临的问题就是:对于Java端返回的各种Java类型的对象,Flex中能否有相应的数据类型来映射。
处理,尤其是List、Set、Map及POJO对象值。
在 BlazeDS 与Spring集成指南 例子的基础上,调整相关的测试代码如下:
1、Java端
1.1、com.yeeach.HelloWorldService
package com.yeeach; 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 HelloWorldService {
public String hello(String var1) {
return "hello " + var1;
}
public String world(String var1) {
return "world " + var1;
}
public Map<String,List<String>> getMap() {
ArrayList<String> list1=new ArrayList<String>();
list1.add("value11");
list1.add("value12");
list1.add("value13");
ArrayList<String> list2=new ArrayList<String>();
list2.add("value21");
list2.add("value22");
list2.add("value23");
ArrayList<String> list3=new ArrayList<String>();
list3.add("value31");
list3.add("value32");
list3.add("value33");
HashMap<String,List<String>> map=new HashMap<String,List<String>>();
map.put("key1", list1);
map.put("key2", list2);
map.put("key3", list3);
return map;
}
public ArrayList<Person> getList() {
ArrayList <Person> list=new ArrayList<Person>();
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<Person> getSet() {
HashSet<Person> set=new HashSet<Person>();
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;
}
} 1.2、com.yeeach.Person
package com.yeeach; 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; }
2、Flex 端
2.1、helloworld.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">
<mx:RemoteObject destination="test1"
id="test1">
<mx:method name="hello"
result="sayHelloResult(event)"/>
<mx:method name="world"
result="sayWorldResult(event)"/>
<mx:method name="getMap"
result="getMapResult(event)"/>
<mx:method name="getList"
result="getListResult(event)"/>
<mx:method name="getSet"
result="getSetResult(event)"/>
</mx:RemoteObject>
<mx:HBox>
<mx:Label text="输入:"/>
<mx:TextInput id="inputStr"/>
<mx:Button label="say hello"
click="sayHello(event);"/>
<mx:Button label="say world"
click="sayWorld(event);"/>
<mx:Button label="get map"
click="test1.getMap()"/>
<mx:Button label="get list"
click="test1.getList()"/>
<mx:Button label="get set"
click="test1.getSet()"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="结果:"/>
<mx:TextArea id="result"/>
</mx:HBox> <mx:Script> <![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import com.yeeach.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);
} }
]]>
</mx:Script>
</mx:Application> 2.2、com.yeeach.Person.as
package com.yeeach
{
[Bindable]
[RemoteClass(alias="com.yeeach.Person")]
public class Person
{
public var name:String;
public var pass:String;
}
}
1、JavaBean从Java端返回给Flex,可以通过Flex的Meta Tag [RemoteClass (alias=” “)]来标识服务器端对应的Java的类(一般为POJO对象)。
注意位置,是在class声明前。
2、Java Collection返回给Flex,都可以通过转化为mx.collections.ArrayCollection来进行处理。
3、Flex对于服务器端返回的java其他类型的处理,相对简单,可以参考
http://livedocs.adobe.com/flex/3/html/help.html?content=data_access_4.html
Flex 对Java端返回Collection的处理方法的更多相关文章
- ajax跨域POST时执行OPTIONS请求服务端返回403forbidden的解决方法
ajax访问服务端restful api时,由于contentType类型的原因,浏览器会先发送OPTIONS请求. 本人服务端用的是spring mvc框架,web服务器用的是tomcat的,以下给 ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- Flex上传文件Java端解决中文乱码问题
1.Flex端进行编码 public function encodeStr(str:String, charSet:String):String { var result:String =" ...
- Java集合(Collection)综述
1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...
- Flex与Java通信之HttpService
flashbuilder4.6.myeclipse10 参考:http://www.cnblogs.com/lovemoon714/archive/2012/05/25/2517684.html 1. ...
- Java 基础 - Collection集合通用方法及操作/ArrayList和LinkedList的差别优势 /弃用的Vector
Collection的笔记: /**存储对象考虑使用: * 1.数组, ①一旦创建,其长度不可变!② 长度难于应对实际情况 * 2.Java集合, ①Collection集合: 1.set: 元素无序 ...
- iOS解析Server端返回JSON数据
在做quhao APP架构时,后台Server端使用了Java,提供WebService,而iOS和Android作为移动客户端.在做数据交互时,Server端返回JSON格式数据.由于iOS SDK ...
- phpCAS::handleLogoutRequests()关于java端项目登出而php端项目检测不到的测试
首先,假如你有做过cas,再假如你的cas里面有php项目,这个时候要让php项目拥有cas的sso功能,你需要改造你的项目,由于各人的项目不同,但是原理差不多,都是通过从cas服务器获取sessio ...
- 05_android入门_GET方式实现登陆(在控件上显示服务端返回的内容)
当点击登陆之后,怎么把server端返回的数据,写到指定的控件上尼?,在android怎么实现尼?以下我们通过详细的代码进行分析和实现,希望能对你,在学习android知识上有所帮助. 以下通过代码说 ...
随机推荐
- Android init.rc解析【转】
转自:http://www.linuxidc.com/Linux/2014-10/108438.htm 本文主要来自$Android_SOURCE/system/init/readme.txt的翻译. ...
- HUD-1142
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- hdoj - 1258 Sum It Up && hdoj - 1016 Prime Ring Problem (简单dfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1258 关键点就是一次递归里面一样的数字只能选一次. #include <cstdio> #inclu ...
- 自动化测试LoadRunner
这个地址应该比较的好下载,以前找的地址都是需要输入一些相关的信息.这个只需要有一个HP的注册账号就可下载,记下来.以备后用: 下载地址: http://www8.hp.com/us/en/softwa ...
- 【温故知新】c#异步编程模型(APM)--使用委托进行异步编程
当我们用到C#类许多耗时的函数XXX时,总会存在同名的类似BeginXXX,EndXXX这样的函数. 例如Stream抽象类的Read函数就有 public abstract int Read(byt ...
- golang 常用网址收藏
1:beego 模板语法指南:http://blog.go-china.org/03-beego-template 2:go 语言sublimetext2配置:http://www.kankanews ...
- UVa 247 Calling Circles【传递闭包】
题意:给出n个人的m次电话,问最后构成多少个环,找出所有的环 自己想的是:用map来储存人名,每个人名映射成一个数字编号,再用并查集,求出有多少块连通块,输出 可是map不熟,写不出来,而且用并查集输 ...
- volley(4) 请求参数:data:[ { bar_remain:XX , bar_code:"XX" , bar_id: XX}], method:GET
1. 来自于WHCombineBatchFragment.java 2.部分代码 ).).).).port + Url.LABELPRINT + "?data="+strPrint ...
- iOS基础CGAffineTransform的简单使用
CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平移操作: 另称放射变换矩阵,可参照线性代数的矩阵实现方式0. ...
- Android AIDL自动生成Java文件测试
/******************************************************************************** * Android AIDL自动生成 ...