(由于本人也是第一次接触flex开发,因此将开发过程中问题记录留档)

一.数据交换过程

借助BlazeDS可以实现flex与java之间的数据交互,大体流程如下:

1.导入blazeds的文件(配置web.xml/MANIFEST.MF)。

2.编写java类

3.在remoting-config.xml中注册java类

4.在mxml文件中调用java类的函数

举例说明:

java类

  1. public class OperationInfo {
  2. /**
  3. *
  4. * getObjectList:获取操作对象列表 <br/>
  5. * Process: (TODO 这里描述这个方法的执行流程).<br/>
  6. * Call: (TODO 这里描述这个方法调用的其他类.方法).<br/>
  7. *
  8. * @return TODO
  9. * @since JDK 1.6
  10. */
  11. public ArrayList<String> getNodeList(String type) {
  12. ArrayList<String> result = new ArrayList<String>();
  13. String tid = (String) session.get("taskId");
  14. String sql = "select data_name from。。";
  15. Object[] params = new Object[]{type,tid};
  16. BaseDao dao = new BaseDao();
  17. result = dao.find(sql, params, "data_name");
  18. return result;
  19. }
  20.  
  21. /**
  22. *
  23. * getObjectList:获取数据元素列表 <br/>
  24. * Process: (TODO 这里描述这个方法的执行流程).<br/>
  25. * Call: (TODO 这里描述这个方法调用的其他类.方法).<br/>
  26. *
  27. * @return TODO
  28. * @since JDK 1.6
  29. */
  30. public ArrayList<String> getDataElementList(String node) {
  31. ArrayList<String> result = new ArrayList<String>();
  32. String sql = "select element_name from 。。";
  33. Object[] params = new Object[]{node};
  34. BaseDao dao = new BaseDao();
  35. result = dao.find(sql, params, "element_name");
  36. return result;
  37. }
  38.  
  39. }

remoting-config.xml (id是在mxml文件中调用该java类时的标识,source是java类的路径)

  1. <destination id="operation_params">
  2. <properties>
  3. <source>com.flow.dao.OperationInfo</source>
  4. </properties>
  5. </destination>

.mxml

  1. //注册java类,destination值为java类在xml文件中的id,id值是在本文件中的标识
    <fx:Declarations>
  2. <s:RemoteObject destination="operation_params" id="operParams" ></s:RemoteObject>
  3. </fx:Declarations>
  4. <fx:Script>
  5. <![CDATA[
  6. import mx.events.CloseEvent;
  7. import mx.managers.PopUpManager;
  8. import mx.controls.Alert;
  9. import mx.rpc.events.ResultEvent;
  10. import mx.collections.ArrayCollection;
  11. //********************************//
  12. private function typeChange():void{
  13. var type:String = object_type.selectedItem.label;
  14. //Alert.show(type);
  15. operParams.getNodeList(type);
  16. operParams.addEventListener(ResultEvent.RESULT,showNodeList);
  17. }
  18.  
  19. private function showNodeList(e: ResultEvent):void{
  20. nodeList.dataProvider = ArrayCollection(e.result);
  21. if(operParams.hasEventListener(ResultEvent.RESULT)){
  22. operParams.removeEventListener(ResultEvent.RESULT,showNodeList);
  23. }
  24. }
  25.  
  26. private function nodeChange():void{
  27. var node:String = nodeList.selectedItem;
  28. operParams.getDataElementList(node);
  29. operParams.addEventListener(ResultEvent.RESULT,showElementList);
  30. }
  31.  
  32. private function showElementList(e: ResultEvent):void{
  33. dataElementList.dataProvider = ArrayCollection(e.result);
  34. operParams.removeEventListener(ResultEvent.RESULT,showElementList);
  35. }
  36.  
  37. ]]>
  38. </fx:Script>
  39.  
  40. <s:DropDownList x="91" y="9" id="object_type" change="typeChange()">
  41. <s:ArrayList>
  42. <fx:Object label="单证" data="单证" />
  43. <fx:Object label="数据包" data="数据包"/>
  44. </s:ArrayList>
  45. </s:DropDownList>
  46.  
  47. <s:Label x="45" y="61" width="32" height="20" text="节点"/>
  48. <s:DropDownList x="91" y="57" id="nodeList" change="nodeChange()"></s:DropDownList>
  49.  
  50. <s:Label x="229" y="62" width="35" height="20" text="元素*"/>
  51. <s:DropDownList x="272" y="57" id="dataElementList"></s:DropDownList>

二.备注

1.java中将结果装入ArrayList<String>中并发送至flex端,接收时可进行转型ArrayCollection(e.result),再作为dataProvider赋给DropDownList。

2.java中map类型的数据在flex可以以object类型接收。每一个key值,都相当于Object的一个属性名,key对应的value,相当于属性值。

  1. public Map<String,ArrayList<String>> getParams(){
  2. Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();
  3. map.put("oper_object_class", getOperObjectClass());
  4. map.put("oper_period", getOperPeriod());
  5. return map;
  6. }
  1. private function fillParams(e: ResultEvent):void{
  2. var map:Object = e.result as Object;
  3. //准备“操作对象类型”参数
  4. target_sort.dataProvider = ArrayCollection(map.oper_object_class);
  5. //准备"发生时间区间"参数
  6. operate_time1.dataProvider = ArrayCollection(map.oper_period);
  7. operate_time2.dataProvider = ArrayCollection(map.oper_period);
  8. operate_time3.dataProvider = ArrayCollection(map.oper_period);
  9. }

Flex4开发笔记(与JAVA交互)的更多相关文章

  1. 【开发笔记】- Java读取properties文件的五种方式

    原文地址:https://www.cnblogs.com/hafiz/p/5876243.html 一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供j ...

  2. LeapMotion控制器 java语言开发笔记--(Java开发环境的准备)

    (1)官方文档说的是必须是JDK6,JDK7,我试了一下JDK8也是可以的 (2)我是在Windows系统下用的是Eclipse Java的开发环境这里不再多说.将下载的JDK里面的java.dll和 ...

  3. 【开发笔记】- Java中关于HashMap的元素遍历的顺序问题

    今天在使用如下的方式遍历HashMap里面的元素时 for (Entry<String, String> entry : hashMap.entrySet()) { MessageForm ...

  4. 【开发笔记】java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

    在进行"spring的声明式事务管理配置"的时候,抛出该异常. 错误原因: 缺少aopalliance.jar包. 事务管理配置如下: <!-- #######5.sprin ...

  5. 【开发笔记】- Java写入、读取文本

    文本写入 public static void createFile(String input) throws IOException { //设置文件路径 String filePath = &qu ...

  6. 李兴华JavaWeb开发笔记

    李兴华JavaWeb开发笔记 1.Java语法-基础 环境变量-JAVA_HOME, PATH, ClassPath 变量名 作用 举例 JAVA_HOME 指向JDK目录 C:\Program Fi ...

  7. Java开发笔记(一百零四)普通线程池的运用

    前面介绍了线程的基本用法,以及多线程并发的问题处理,但实际开发中往往存在许多性质相似的任务,比如批量发送消息.批量下载文件.批量进行交易等等.这些同类任务的处理流程一致,不存在资源共享问题,相互之间也 ...

  8. Java开发笔记(一百零一)通过加解锁避免资源冲突

    前面介绍了如何通过线程同步来避免多线程并发的资源冲突问题,然而添加synchronized的方式只在简单场合够用,在一些高级场合就暴露出它的局限性,包括但不限于下列几点:1.synchronized必 ...

  9. Java开发笔记(九十三)深入理解字节缓存

    前面介绍了文件通道的读写操作,其中用到字节缓存ByteBuffer,它是位于通道内部的存储空间,也是通道唯一可用的存储形式.ByteBuffer有两种构建方式,一种是调用静态方法wrap,根据输入的字 ...

随机推荐

  1. CSS实例:水平居中和垂直居中的多种解决方案

    1.单行垂直居中 文字在层中垂直居中vertical-align 属性是做不到的.我们这里有个比较巧妙的方法就是:设置height的高度与line-height的高度相同! Example Sourc ...

  2. 图的深度优先遍历(DFS) c++ 非递归实现

    深搜算法对于程序员来讲是必会的基础,不仅要会,更要熟练.ACM竞赛中,深搜也牢牢占据着很重要的一部分.本文用显式栈(非递归)实现了图的深度优先遍历,希望大家可以相互学习. 栈实现的基本思路是将一个节点 ...

  3. Qt5.3.0 for android windows平台下搭建及demo(虫子的博客)

    ----我的生活,我的点点滴滴!! 部门领导突然心血来潮,想在android平台上做应用,但是我们大多产品属于嵌入式(本吊只负责写写应用,苦比的被强行顶过来搞这,由于这还得领导吵了一架,架虽然吵完了, ...

  4. web编码(转)

    问题2.浏览器编码方式是根据“响应标头-response header”中的键为“Content-Type”的值来自动选择判断,而不会简单的根据你在html中看到的标签值<meta http-e ...

  5. oracle 和informix 的基础区别

    1:查看表空间 select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes/1024/1024 大小M, (b.bytes-sum(nvl(a.b ...

  6. Final Exam Arrangement(ZOJ)

    In Zhejiang University, there are N different courses labeled from 1 to N. Each course has its own t ...

  7. CentOs文件实时同步

    1,生成数据序

  8. iOS中UITextView键盘回收

    iOS开发中,发现UITextView没有像UITextField中textFieldShouldReturn:这样的方法,那么要实现UITextView关闭键盘,就必须使用其他的方法,下面是可以使用 ...

  9. hdu 5584 LCM Walk(数学推导公式,规律)

    Problem Description A frog has just learned some number theory, and can't wait to show his ability t ...

  10. iOS开发之GCD使用总结

    GCD是iOS的一种底层多线程机制,今天总结一下GCD的常用API和概念,希望对大家的学习起到帮助作用. GCD队列的概念 在多线程开发当中,程序员只要将想做的事情定义好,并追加到DispatchQu ...