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);
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()
{
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值