远程对象

Technorati 标签: Flex

什么是RemoteObject?
顾名思义,即远程对象。这里指的就是在Flex中获取Java对象。有什么用呢?这样Flex可以更加简 单的获取服务端的数据,比如你在Java中有个方法进行了数据查询,那么你可以很容易通过Flex里的RemoteObject访问到该类,并调用该方 法,最后返回的数据是Flex也兼容的Array对象。

好了,下面开始进行工作....o(∩_∩)o...

1.新建Java类
       1
   Source folder :  指定源路径(本例为FlexRemoteObject/src).
   Package       : 指定包名.
   Name           :  指定类名.

2.编写RemoteClass内容.
      2
     这是一个简单的Class,里面只有一个public方法  sayHello  ,带有一个String参数,并且返回一个String.

3.配置BlazeDS的  remoting-config.xml 
       1).它是RemoteObject和相关远程访问的配置文件.路径位于
      
      
        2).改写其代码,如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <service id="remoting-service" 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指定一个RO对象,id将在Flex中进行RO请求时调用. -->
             <destinationid="RemoteClassRO">
                  <properties>
                      <!-- source指定调用类的全路径 -->
                      <source>com.test.RemoteClass</source>
                      <!-- scope指定作用域 -->
                      <scope>application</scope>
                  </properties>
             </destination>

           </service>
  
   
  注意:在修改了配置文件后可能需要重启web服务器(Tomcat)

4.  编写mxml文件,进行RO请求.
      1).打开FlexRemoteObject.mxml文件,编写内容如下:
         <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
        <mx:Style>
            Label{
                fontSize:14;
                fontFamily:"微软雅黑";
            }
            TextInput{
                fontSize:14;
                fontFamily:"微软雅黑"; height:25; width:149;  paddingBottom:-4; paddingLeft:4; paddingTop:-2;
            }
            Button{
                fontSize:"12"
            }
        </mx:Style>

        <mx:Script>
            <![CDATA[
                import mx.rpc.events.ResultEvent;
                import mx.controls.Alert;
                private var alertCss:CSSStyleDeclaration;
                private function init():void{
                    alertCss = StyleManager.getStyleDeclaration("Alert");
                    alertCss.setStyle("modalTransparencyColor","haloBlue");
                    alertCss.setStyle("themeColor","haloBlue");
                    alertCss.setStyle("fontSize","14");
                    alertCss.setStyle("fontFamily","微软雅黑");
                }
                private function callRO():void{
                    var name:String  = txt.text;
                    if(name==""){
                        Alert.show("请输入姓名!","提示信息");
                    }else{
                        firstRO.sayHello(name);
                        firstRO.addEventListener(ResultEvent.RESULT,getROResult);
                    }
                }
                private function getROResult(e:ResultEvent):void{
                    Alert.show(e.result.toString(),"远程对象访问");
                }
            ]]>
        </mx:Script>
        <mx:RemoteObject id="firstRO" destination="RemoteClassRO" />
        <mx:Label id="lbl" text="请输入姓名:"  x="29" y="49" />
        <mx:Button id="btn" click="callRO()" label="RO请求"  x="307" y="50" />
        <mx:TextInput x="124" y="49" id="txt" text="爷们" />
</mx:Application>

其中:1.<mx:Style></mx:Style>为样式区域,里面为页面的组件设定了样式;
        2.<mx:Script></mx:Script>为脚本区域,里面是将调用到的函数;
        3.剩下为页面各个组件.

init()函数:主要是为Alert设定相关样式,不作为重点介绍.

callRO()函数:作为请求函数,与页面的Button组件的click事件进行了关联,即当点击Button时,会调用这个callRO()函数.
                 函数内部对文本框输入内容进行了判断,当输入内容为空时,弹出相关提示;
                 反之,进入远程对象的方法调用,firstRO.sayHello(name)——其中name为文本框内容,
                 另外还为firstRO对象添加了一个事件的监听,firstRO.addEventListener(ResultEvent.RESULT,getROResult);
                     这是告诉firstRO对象,当触发了远程对象的方法调用后,指定哪个函数为回调函数.

getROResult()函数,是一个回调函数,将远程对象方法返回值用消息框的形式显示出来.

上面提到的回调函数,如果对AJAX稍有了解的话,就容易理解了,如果你还不太了解,那么找些资料看看吧,o(∩_∩)o...

5.运行查看,效果如图:

呵呵,感觉还是挺有意思的~~

这个RemoteObject的使用,跟DWR的感觉很相似,有些共通的东西,但是我不会说~~o(∩_∩)o...哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值