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

Flex Collection的处理方法

    博客分类:
  • flex
阅读更多

Flex Java端返回Collection的处理方法

对于Java端返回的各种Java类型的对象,Flex中能否有相应的数据类型来映射。处理,尤其是ListSetMapPOJO对象值。

 

1、java端

HelloWorldService.java

import java.util.ArrayList;

import java.util.HashMap;

import java.util.HashSet;

import java.util.List;

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

ap.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;

}

}

       Person.java

public class Person {

private String name;

private String pass;

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;

    }

}

      

 

    2、flex端RemoteObject

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

       ActionScript

<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(), "返回结果");

        }

        //***************map

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

        }

        //***************list

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

        }

        //***************set

        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>

 

       3、总结

       aJavaBeanJava端返回给Flex,可以通过FlexMeta Tag [RemoteClass (alias=“”)]来标识服务器端对应的Java的类(一般为POJO对象)。

注意位置,是在class声明前。

    bJava Collection返回给Flex,都可以通过转化为mx.collections.ArrayCollection来进行处理。

    cFlex对于服务器端返回的java其他类型的处理,相对简单,可以参考

http://livedocs.adobe.com/flex/3/html/help.html?content=data_access_4.html

 

分享到:
评论

相关推荐

    flex控件事件

    Flex的事件调度机制确保了事件的有序处理,避免了多个事件同时处理的混乱情况。 10. 滚动事件和数据改变事件: 对于列表和数据网格等控件,滚动事件(ScrollEvent.SCROLL)允许我们对用户滚动行为作出反应,而...

    Flex 有效的内存回收方法

    1. **垃圾收集(Garbage Collection)**: 垃圾收集是Flex中实现内存管理的主要机制。它自动追踪并释放不再使用的对象所占用的内存。理解如何与垃圾收集器协同工作是减少内存问题的关键。开发者应确保不持有对不再...

    flex for windows

    Flex是广泛用于生成词法分析器(也称为扫描器或解析器)的开源工具,尤其在处理编程语言和配置文件的语法时非常有用。它的原生环境是类Unix系统,如Linux,但通过一些手段,我们可以将其移植到Windows平台。在本篇...

    Flex_&_Bison.zip

    在实际应用中,Flex和Bison可以与其他工具如GCC(GNU Compiler Collection)配合,创建完整的编译系统。例如,你可以使用Flex生成词法分析器,Bison生成语法分析器,再使用GCC或其他编译器将这些分析器和用户编写的...

    Flex 与 Hibernate 的延迟加载问题

    在开发Flex与Hibernate集成的应用时,延迟加载(Lazy Loading)是一个常见的挑战,因为Flex客户端无法直接理解和处理Hibernate的延迟加载机制。延迟加载是一种优化策略,它允许关联的对象在真正需要时才被加载,而...

    Flex_Builder教程

    在Flex中,ActionScript主要用于编写应用逻辑,处理用户交互,以及与服务器进行数据通信。ActionScript中的类文件通常以.as为扩展名,与MXML文件配合使用,实现业务逻辑与界面的解耦。 在Flex Builder中,MXML和...

    flex内存泄露(转载)

    如同其他高级编程语言一样,AVM内嵌有垃圾收集器(Garbage Collection),用于自动管理和释放不再使用的对象所占用的内存资源。尽管如此,Flex应用仍然可能出现内存泄露问题,这是由特定的编程实践或设计缺陷引起的...

    flex 分页控件,通过事件处理

    本篇将详细介绍如何在Flex中创建和管理分页控件,并通过事件处理来实现其功能。 首先,我们要了解Flex中的`PagingToolbar`。`PagingToolbar`是Flex中用于实现分页功能的组件,通常与数据网格(如`DataGrid`或`...

    FlexBuilder教程.pdf

    总的来说,FlexBuilder教程旨在帮助开发者掌握如何使用MXML构建用户界面,利用ActionScript处理交互逻辑,并通过数据绑定和数据提供程序实现数据驱动的界面,从而开发出功能强大且用户体验优秀的Flex应用程序。...

    flex题目大全

    使用方法是在Flex项目中引用所需的RSL,并在运行时动态加载。 #### 27. 如何使应用去掉水平滚动条而显示垂直滚动条? - **答案**:通过设置`&lt;s:Application&gt;`标签中的`scrollPolicy`属性。 #### 28. 我想创建的...

    bison&flex&mingw.zip

    在编译器设计中,Bison和Flex共同工作,Bison处理语法规则,Flex负责词法分析。通过它们,开发者可以构建复杂的解析器,理解并处理各种定制的编程语言或数据格式。MinGW则提供了一个与Linux类似但适应Windows环境的...

    flex datagrid中实现显示序列号

    `itemRenderer`是Flex提供的一种自定义数据显示的方式,允许我们对每个单元格的数据进行定制化处理。在本篇文章中,我们将深入探讨如何在Flex DataGrid中利用`itemRender`来实现序列号的显示。 首先,了解`...

    Flex Builder教程

    MXML是一种基于XML的标记语言,用于布局用户界面和处理应用程序的其他方面,而ActionScript则是一种基于ECMA 262的强类型面向对象编程语言,专门用于处理用户交互逻辑。 Flex Builder,类似于Dreamweaver对于HTML的...

    lex自动生成工具 flex+gcc

    8. **应用领域**:`flex`和`gcc`组合广泛应用于编译器和解释器的开发、语言解析器的构建、文本处理工具以及任何需要对输入数据进行模式匹配的系统。 综上所述,`lex自动生成工具 flex+gcc`是一个强大的组合,它简化...

    java 与 flex 数据转换

    Flex 主要用于构建富互联网应用程序(RIA),而 Java 则是后端服务器处理业务逻辑的强大平台。这两种技术之间的通信通常通过 AMF(Action Message Format)或 SOAP 等协议进行,涉及到数据类型的映射和转换。 ...

    flex动态树_动态图表

    通过监听数据源的事件,比如CollectionEvent.COLLECTION_CHANGE,我们可以更新Tree控件,使其保持与数据同步。 动态图表则涉及到mx.charts.Chart类,它可以绘制各种类型的图表,如折线图、柱状图、饼图等。当数据源...

    深入FLEX组件生命周期

    这些变化需要通过更新阶段进行处理。 ##### 1. Invalidation(无效化) **定义**:当组件的某个属性发生改变时,组件可能会被标记为无效状态。这意味着组件需要重新计算其尺寸和外观。 **代码示例**: ```as this...

    Flex虚拟机内存管理机制及防止内存泄漏

    本篇文章将深入探讨Flex虚拟机的内存管理机制以及如何预防和处理内存泄漏问题。 内存管理在任何软件开发中都至关重要,尤其是在动态语言如ActionScript中。Flex虚拟机采用了一种自动垃圾回收(Garbage Collection, ...

    Flex内存管理及相关内容

    Flex作为一种用于构建RIA(Rich Internet Applications)的应用框架,其背后的编程语言ActionScript(简称AS)支持垃圾回收(Garbage Collection, GC)。这使得开发者无需手动管理内存,从而减少了一些常见的内存...

Global site tag (gtag.js) - Google Analytics