Flex4开发笔记(与JAVA交互)
(由于本人也是第一次接触flex开发,因此将开发过程中问题记录留档)
一.数据交换过程
借助BlazeDS可以实现flex与java之间的数据交互,大体流程如下:
1.导入blazeds的文件(配置web.xml/MANIFEST.MF)。
2.编写java类
3.在remoting-config.xml中注册java类
4.在mxml文件中调用java类的函数
举例说明:
java类
public class OperationInfo {
/**
*
* getObjectList:获取操作对象列表 <br/>
* Process: (TODO 这里描述这个方法的执行流程).<br/>
* Call: (TODO 这里描述这个方法调用的其他类.方法).<br/>
*
* @return TODO
* @since JDK 1.6
*/
public ArrayList<String> getNodeList(String type) {
ArrayList<String> result = new ArrayList<String>();
String tid = (String) session.get("taskId");
String sql = "select data_name from。。";
Object[] params = new Object[]{type,tid};
BaseDao dao = new BaseDao();
result = dao.find(sql, params, "data_name");
return result;
} /**
*
* getObjectList:获取数据元素列表 <br/>
* Process: (TODO 这里描述这个方法的执行流程).<br/>
* Call: (TODO 这里描述这个方法调用的其他类.方法).<br/>
*
* @return TODO
* @since JDK 1.6
*/
public ArrayList<String> getDataElementList(String node) {
ArrayList<String> result = new ArrayList<String>();
String sql = "select element_name from 。。";
Object[] params = new Object[]{node};
BaseDao dao = new BaseDao();
result = dao.find(sql, params, "element_name");
return result;
} }
remoting-config.xml (id是在mxml文件中调用该java类时的标识,source是java类的路径)
<destination id="operation_params">
<properties>
<source>com.flow.dao.OperationInfo</source>
</properties>
</destination>
.mxml
//注册java类,destination值为java类在xml文件中的id,id值是在本文件中的标识
<fx:Declarations>
<s:RemoteObject destination="operation_params" id="operParams" ></s:RemoteObject>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
//********************************//
private function typeChange():void{
var type:String = object_type.selectedItem.label;
//Alert.show(type);
operParams.getNodeList(type);
operParams.addEventListener(ResultEvent.RESULT,showNodeList);
} private function showNodeList(e: ResultEvent):void{
nodeList.dataProvider = ArrayCollection(e.result);
if(operParams.hasEventListener(ResultEvent.RESULT)){
operParams.removeEventListener(ResultEvent.RESULT,showNodeList);
}
} private function nodeChange():void{
var node:String = nodeList.selectedItem;
operParams.getDataElementList(node);
operParams.addEventListener(ResultEvent.RESULT,showElementList);
} private function showElementList(e: ResultEvent):void{
dataElementList.dataProvider = ArrayCollection(e.result);
operParams.removeEventListener(ResultEvent.RESULT,showElementList);
} ]]>
</fx:Script> <s:DropDownList x="91" y="9" id="object_type" change="typeChange()">
<s:ArrayList>
<fx:Object label="单证" data="单证" />
<fx:Object label="数据包" data="数据包"/>
</s:ArrayList>
</s:DropDownList> <s:Label x="45" y="61" width="32" height="20" text="节点"/>
<s:DropDownList x="91" y="57" id="nodeList" change="nodeChange()"></s:DropDownList> <s:Label x="229" y="62" width="35" height="20" text="元素*"/>
<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,相当于属性值。
public Map<String,ArrayList<String>> getParams(){
Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();
map.put("oper_object_class", getOperObjectClass());
map.put("oper_period", getOperPeriod());
return map;
}
private function fillParams(e: ResultEvent):void{
var map:Object = e.result as Object;
//准备“操作对象类型”参数
target_sort.dataProvider = ArrayCollection(map.oper_object_class);
//准备"发生时间区间"参数
operate_time1.dataProvider = ArrayCollection(map.oper_period);
operate_time2.dataProvider = ArrayCollection(map.oper_period);
operate_time3.dataProvider = ArrayCollection(map.oper_period);
}
Flex4开发笔记(与JAVA交互)的更多相关文章
- 【开发笔记】- Java读取properties文件的五种方式
原文地址:https://www.cnblogs.com/hafiz/p/5876243.html 一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供j ...
- LeapMotion控制器 java语言开发笔记--(Java开发环境的准备)
(1)官方文档说的是必须是JDK6,JDK7,我试了一下JDK8也是可以的 (2)我是在Windows系统下用的是Eclipse Java的开发环境这里不再多说.将下载的JDK里面的java.dll和 ...
- 【开发笔记】- Java中关于HashMap的元素遍历的顺序问题
今天在使用如下的方式遍历HashMap里面的元素时 for (Entry<String, String> entry : hashMap.entrySet()) { MessageForm ...
- 【开发笔记】java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
在进行"spring的声明式事务管理配置"的时候,抛出该异常. 错误原因: 缺少aopalliance.jar包. 事务管理配置如下: <!-- #######5.sprin ...
- 【开发笔记】- Java写入、读取文本
文本写入 public static void createFile(String input) throws IOException { //设置文件路径 String filePath = &qu ...
- 李兴华JavaWeb开发笔记
李兴华JavaWeb开发笔记 1.Java语法-基础 环境变量-JAVA_HOME, PATH, ClassPath 变量名 作用 举例 JAVA_HOME 指向JDK目录 C:\Program Fi ...
- Java开发笔记(一百零四)普通线程池的运用
前面介绍了线程的基本用法,以及多线程并发的问题处理,但实际开发中往往存在许多性质相似的任务,比如批量发送消息.批量下载文件.批量进行交易等等.这些同类任务的处理流程一致,不存在资源共享问题,相互之间也 ...
- Java开发笔记(一百零一)通过加解锁避免资源冲突
前面介绍了如何通过线程同步来避免多线程并发的资源冲突问题,然而添加synchronized的方式只在简单场合够用,在一些高级场合就暴露出它的局限性,包括但不限于下列几点:1.synchronized必 ...
- Java开发笔记(九十三)深入理解字节缓存
前面介绍了文件通道的读写操作,其中用到字节缓存ByteBuffer,它是位于通道内部的存储空间,也是通道唯一可用的存储形式.ByteBuffer有两种构建方式,一种是调用静态方法wrap,根据输入的字 ...
随机推荐
- 使用 VB.NET 开发多线程
摘要:.NET 框架提供了新的类,可以方便地创建多线程应用程序.本文介绍如何使用 Visual Basic® .NET 的多线程编程技术来开发效率更高.响应速度更快的应用程序. 目录 简介 多线程处理 ...
- 安装wxWidgets
从官网可下载源码安装包.安装后,建立批处理文件对其进行编译: gvim bwx.bat 内容如下: @echo off set WXWIN=C:\wxWidgets-3.0.2 pushd %WXWI ...
- vc++ internet
1.用VC开发ActiveX文档服务器 MFC 4.2不支持开发ActiveX容器,但支持ActiveX服务器.只要在使用MFC AppWizard生成应用程序框架时选择支持Active Docume ...
- 自给自足:动手打造html5俄罗斯方块
时间:凌晨2:36 历时:两晚+半个下午 代码:约300行 这两天发烧,头痛脑壳昏的,没想到竟然还能有动力去做小游戏,其实这不是我第一次想要弄个俄罗斯方块,前几个星期的时候就尝试着去弄一个,然后被凌乱 ...
- 嵌入式平台使用gtest进行白盒测试
看了coderzh大神写的gtest(http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html)使用的帖子,觉得gtest这个工具比 ...
- makefile死磕笔记
开始我会插播一段我如何学习makefile的废话,如果不想听的话,请直接跳到我的makefile教程. 首先得先说明学习makefile真是一个痛苦的过程,尤其是用干巴巴的看书来学习的过程,简直可以用 ...
- 让QT对话框显示中文
http://blog.sina.com.cn/s/blog_8254427901011fxv.html (1)从QT安装目录下面将文件“qt_zh_CN.qm”复制一份到你的项目目录下. 例如,我是 ...
- [Backbone.js]如何用backbone写一个仿网页版微信的webapp?
var Chat = Backbone.Model.extend({ idAttribute:'id', initialize:function(options){ var users = this. ...
- android中利用view画出一条竖线
在android中有时候需要通过线条来分割控件.最常见的情形就是在底部选项卡的多个button中间,通过加入一条竖线加以区分或者是在头部导航添加 竖线,将返回键和其他内容区分开来.一般会通过image ...
- 海康威视研究院ImageNet2016竞赛经验分享
原文链接:https://zhuanlan.zhihu.com/p/23249000 目录 场景分类 数据增强 数据增强对最后的识别性能和泛化能力都有着非常重要的作用.我们使用下面这些数据增强方法. ...