java返回对象给flex_Flex 对Java端返回Collection的处理方法

将Flex与Spring集成后(BlazeDS 与Spring集成指南 ),第一个面临的问题就是:对于Java端返回的各种Java类型的对象,Flex中能否有相应的数据类型来映射。

处理,尤其是List、Set、Map及POJO对象值。

在 BlazeDS 与Spring集成指南 例子的基础上,调整相关的测试代码如下:

1 1、Java端2 1.1、com.yeeach.HelloWorldService3 packagecom.yeeach;4

5 importjava.util.ArrayList;6 importjava.util.HashMap;7 importjava.util.HashSet;8 importjava.util.List;9 importjava.util.Map;10 importjava.util.Set;11

12 public classHelloWorldService {13 publicString hello(String var1) {14 return "hello " +var1;15 }16 publicString world(String var1) {17 return "world " +var1;18 }19 public Map>getMap() {20 ArrayList list1=new ArrayList();21 list1.add("value11");22 list1.add("value12");23 list1.add("value13");24 ArrayList list2=new ArrayList();25 list2.add("value21");26 list2.add("value22");27 list2.add("value23");28 ArrayList list3=new ArrayList();29 list3.add("value31");30 list3.add("value32");31 list3.add("value33");32 HashMap> map=new HashMap>();33 map.put("key1", list1);34 map.put("key2", list2);35 map.put("key3", list3);36 returnmap;37 }38 public ArrayListgetList() {39 ArrayList list=new ArrayList();40 Person p1=newPerson();41 p1.setName("name1");42 p1.setPass("pass1");43 Person p2=newPerson();44 p2.setName("name2");45 p2.setPass("pass2");46 Person p3=newPerson();47 p3.setName("name3");48 p3.setPass("pass3");49 list.add(p1);50 list.add(p2);51 list.add(p3);52 returnlist;53 }54 public SetgetSet() {55 HashSet set=new HashSet();56 Person p1=newPerson();57 p1.setName("name1");58 p1.setPass("pass1");59 Person p2=newPerson();60 p2.setName("name2");61 p2.setPass("pass2");62 Person p3=newPerson();63 p3.setName("name3");64 p3.setPass("pass3");65 set.add(p1);66 set.add(p2);67 set.add(p3);68 returnset;69 }70 }71

72 1.2、com.yeeach.Person73 packagecom.yeeach;74

75 public classPerson {76

77 publicString getName() {78 returnname;79 }80 public voidsetName(String name) {81 this.name =name;82 }83 publicString getPass() {84 returnpass;85 }86 public voidsetPass(String pass) {87 this.pass =pass;88 }89 privateString name;90 privateString pass;91

92 }

2、Flex 端

2.1、helloworld.mxml

layout="vertical">

id="test1">

result="sayHelloResult(event)"/>

result="sayWorldResult(event)"/>

result="getMapResult(event)"/>

result="getListResult(event)"/>

result="getSetResult(event)"/>

click="sayHello(event);"/>

click="sayWorld(event);"/>

click="test1.getMap()"/>

click="test1.getList()"/>

click="test1.getSet()"/>

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);

}

}

]]>

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其他类型的处理,相对简单,可以参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值