flex中使用RemoteObject与java通信(使用AS实现)
来源:互联网 发布:淘宝店铺怎么卖话费 编辑:程序博客网 时间:2024/05/18 01:34
flex中页面采集上来的数据与后端service的交互,中间的桥梁是前端Java了,也就是EJB Client。一般使用RemoteObject来实现比较方便,这里我写一下AS文件中的简单实现。
1.编写一个java类MyManager.java
这只是一个简单的Java类,让页面能够调用Java类的一个方法,传值进去然后,处理完以后在返回给页面。
package com.pzr.remote;public class MyManager {public MyManager(){}public String test(String str){return str+",我进过前端Java";}}
2.注册Java类
Java类有了,如何让Flex能够识别这个类,我们就需要在配置文件中给他一个名分。在Flex的remoting-config-system.xml这个配置文件中注册这个类。
<?xml version="1.0" encoding="UTF-8"?><service id="remoting-service-system" class="flex.messaging.services.RemotingService"><adapters><adapter-definition id="java-object"class="flex.messaging.services.remoting.adapters.JavaAdapter"default="true" /></adapters><default-channels><channel ref="my-amf" /></default-channels><destination id="MyManager"><properties><source>com.pzr.remote.MyManager</source></properties></destination></service>
需要注意的是services-config.xml这个文件中有对remoting-config-system.xml这个文件注册管理。
<services> <service-include file-path="proxy-config.xml" /> <service-include file-path="messaging-config.xml" /> <service-include file-path="remoting-config-system.xml" /> </services>
3.页面使用RemoteObject调用Java
这里有两种方法,一种是使用mxml标签引入,一种是使用as引入,其实mxml引入最后也是要被编译成as的,不过具体是什么样子不知道,这里我就说一下如何使用as引入。
<?xml version="1.0" encoding="utf-8"?><!-- Simple example to demonstrate the Halo DataGrid control. --><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" creationComplete="init()" ><fx:Script><![CDATA[import mx.collections.ArrayCollection;import mx.controls.Alert;import mx.rpc.events.FaultEvent;import mx.rpc.events.ResultEvent;import mx.rpc.remoting.RemoteObject;public function init():void{//新建一个RemoteObject对象var myManagerRemote:RemoteObject = new RemoteObject;//这里的desitination对应配置文件中的某一个myManagerRemote.destination = "MyManager";//添加有返回值的监听myManagerRemote.addEventListener(ResultEvent.RESULT,initHandler);//添加失败的监听myManagerRemote.addEventListener(FaultEvent.FAULT,faultHandler);//调用Java中的方法,这里是点不出来的,要写得与Java中的一致myManagerRemote.test("aaaaaa");}//调用成功的回调,修改Label的text属性public function initHandler(event:ResultEvent):void{myLabel.text = event.result as String;}//调用失败的回调,打印错误信息public function faultHandler(event:FaultEvent):void{Alert.show("----"+event.message);}]]></fx:Script><s:VGroup width="400" height="200" verticalAlign="middle" horizontalAlign="center"><s:Label id="myLabel" /></s:VGroup></s:Application>
4.看效果图
"aaaaa”是我页面传过去的值,"我进过前端Java"是在方法中添加在后面的然后在传回来,在页面显示。
以上我们只是对RemoteObject进行了事件监听,如果想使用一个RemoteObject对多个方法进行监听,类似于MXML标签的实现方法,这我们该怎么实现呢?
首先看一下MXML文件该怎么写
<fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <s:RemoteObject id="MyManager" destination="MyManager"> <s:method name="test" result="initHandler(event)"/> </s:RemoteObject> </fx:Declarations>
这样效果就和as一样了,但有时候我们的method不止一个,那怎么处理呢,我们可以这样想,如果我们把监听注册到RemoteObject对象的方法上,这样是不是就可以解决为难题了呢。
5.解决as监听多个方法的实现
a.将RemoteObject对象的方法勾出来
b.注册监听,执行不同的回调方法
//新建一个RemoteObject对象var myManagerRemote:RemoteObject = new RemoteObject;//这里的desitination对应配置文件中的某一个myManagerRemote.destination = "MyManager";myManagerRemote.getOperation("test").addEventListener(ResultEvent.RESULT,initHandler);myManagerRemote.getOperation("test").addEventListener(FaultEvent.FAULT,faultHandler);//调用Java中的方法,这里是点不出来的,要写得与Java中的一致myManagerRemote.test("bbbbbb");
这样,是不是感觉就和页面上写的效果是一样了呢。
- flex中使用RemoteObject与java通信(使用AS实现)
- 关于Flex中使用RemoteObject
- Flex 与 Java通信 RemoteObject 方式
- flex与java通信一:RemoteObject
- Flex中用RemoteObject与java后台通信
- Flex中使用RemoteObject实现图片上传功能
- Flex中使用RemoteObject实现图片上传功能
- flex 与 java交互 的一个简单示例 (使用RemoteObject)
- Java与Flex学习笔记(4)----Flex与Java通信之RemoteObject方式
- Flex使用 RemoteObject 组件
- Flex与服务器交互(使用RemoteObject+BlazeDS+TomCat同Java交互及开发环境配置)
- Flex-前段actionScript类与Java类的对应(RemoteObject通信-amf)
- flex与java交互:RemoteObject
- Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置)
- Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置)
- 如何使用Flex RemoteObject components(含java/flex类之间的转换)TESTED
- flex:RemoteObject 和 DataGrid 数据交互, AS 与java 数据类型转换
- 使用Fluorine实现Flex与.NET通信
- 优秀程序员和一般程序员差别在哪?
- 世界上最短的时钟代码!更短的,有木有?
- 解决循环引用的一个例子
- Android SQLite总结(一)
- Android自定义属性
- flex中使用RemoteObject与java通信(使用AS实现)
- silverlight开发实例(Prism+MVVM+RIA)(五)--View及ViewModel间通信
- 排序算法-shell排序-改良的插入排序
- XAF之Servermode注意
- #ifndef 和#define 在C++中什么意思?
- Trilogy公司的笔试题:用最少的步骤将数N转为1
- vim 之 折叠
- 健康讲座:警惕草酸
- TELE (树形DP&背包扩展) #by Plato