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()
{
}
}
}
分享到:
相关推荐
8. **测试交互**:运行Flex应用程序,触发对Java服务的调用,观察结果是否正确显示在Flex界面上。 9. **错误处理和优化**:添加错误处理机制,优化通信效率,确保系统的稳定性和性能。 在描述中提到的“包括所有的...
在"flex+java+mysql登录"这个场景中,我们主要探讨的是如何使用Flex客户端与Java后台进行通信,以及通过Java处理数据库交互来实现用户登录功能。 1. Flex数据库操作:Flex中的数据访问通常通过 BlazeDS 或 LCDS ...
Java_Flex技术结合了Java的强大后端处理能力和Flex的富互联网应用程序(RIA)前端展示功能,为开发跨平台、交互性强的Web应用提供了强大的解决方案。本文将深入探讨Java与Flex的集成,以及如何利用这两项技术的优势...
而Java则作为后端服务器端的技术,处理业务逻辑和数据管理。下面将详细介绍这个项目可能涉及的技术和步骤。 1. **Flex SDK**:Flex开发需要Adobe Flex SDK,这是一个包含MXML和ActionScript编译器的工具集。开发者...
这种通信机制使Flex能够利用Java的强大功能来处理复杂的业务逻辑和数据管理。 在Flex和Java之间进行通信时,通常会用到两种主要技术:AMF(Action Message Format)和SOAP(Simple Object Access Protocol)。AMF是...
4. **Flex+Java简单例子.doc**:这个文档可能包含了一些基础的Flex与Java集成的例子,可能涵盖如何创建Flex客户端,定义服务接口,以及如何在Java服务器端实现这些接口,最后展示如何在Flex应用中调用这些服务。...
Flex作为Adobe推出的基于ActionScript的开放源代码框架,主要用于构建交互性强的用户界面,而Java则是一种广泛使用的后端开发语言,提供了强大的服务器端功能。二者结合可以实现前端与后端的有效数据交换,为用户...
而Java服务端则通常指的是使用Java语言编写的应用程序,运行在服务器端,处理来自客户端(如Flex应用)的请求并返回数据。 在Flex和Java之间的通信中,最常用的技术是AMF(Action Message Format),这是一种二进制...
5. **JOTO对象映射**:了解如何在Flex客户端声明Java对象,以及在服务器端如何处理这些对象。这涉及到数据类型的映射和对象的序列化。 6. **事件驱动编程**:在Flex中,事件驱动模型是主要的编程模式。学习如何监听...
BlazeDS是一个开放源代码的服务器端Java远程处理和Web消息传递技术,它允许开发者轻松地将Flex和AIR应用程序连接到后端服务器上运行的Java对象。通过BlazeDS,开发者可以: - 实现客户端与服务器之间的实时通信。 -...
Flex和Java交互搭建是开发富互联网应用程序(RIA)时常用的一种技术组合,它允许前端的Flex界面与后端的Java服务器进行数据交换和业务逻辑处理。这个项目新手用来练手非常合适,因为其结构简单,易于理解。接下来,...
- 记得处理异常并返回适当的响应,例如JSON或XML格式的响应,以便Flex客户端可以获取上传状态。 4. **配置Web服务器和Servlet**: 配置Web服务器(如Tomcat)以部署包含Servlet的Web应用程序,并确保Servlet映射...
Flex与Java通信是Web开发中的一个重要技术组合,它允许用户在浏览器端利用Flash的富互联网应用(RIA)特性,通过ActionScript与服务器端的Java应用程序进行数据交互。本压缩包包含了一个完整的Flex与Java通信的示例...
在Java端,我们需要创建一个Servlet,如`SimpleServiceServlet`,处理HTTP请求并返回响应。在Flex中,配置HTTPService组件,指定Servlet的URL,以及处理结果和错误的回调函数。 ```java // Servlet代码 public ...
而Java作为后端开发语言,提供了强大的服务器端处理能力和稳定的安全性。本实例旨在为初学者和开发者提供一个直观的学习平台,通过实际项目案例,深入理解Flex与Java的集成开发。 一、Flex简介 Flex是一个基于...
本文将详细介绍如何通过Flex与Java进行数据交换,包括Flex客户端的实现方式、Java后端的数据处理逻辑,以及两者之间的通信机制。 #### 二、Java Bean定义 Java Bean是一种遵循特定编码规范的Java类,它用于封装...
2. Java后端服务:项目可能包含了用Java编写的服务端接口,如RESTful API或SOAP服务,用于处理Flex客户端发送的数据请求。 三、LCDSS的作用 1. 数据推送:LCDSS支持双向通信,可以将服务器端的数据实时推送到Flex...
这些例子会展示如何在Flex中创建UI组件,定义事件处理程序,以及如何在Java端处理请求和返回响应。 5. **部署和测试**:介绍如何将Flex应用打包成SWF文件并部署到Web服务器,以及如何与Java应用程序进行集成测试,...
在PPT中,可能会详细展示如何配置BlazeDS或LCDS,设置Flex客户端的AMF通道,以及在Java服务器端创建AMF处理类。此外,还会讲解如何在Flex中使用HTTPService进行REST调用,以及Java如何实现REST接口。同时,PPT可能...