flex-利用RemoteObject模式与Java交互

flex学习
placeholder image
admin 发布于:2010-09-30 11:53:00
阅读:loading

利用RemtoeObject模式与Java交互,给人的感觉就像是dwr来与Java交互一致,2者具有很大的相似性,比如说:都是一种前台调用后台类的模式,调用的都是普通后台类,都需要配置普通后台类的路径,等。

例子:检查用户名是否存在:

说明:以文本框传入的值为例,如果输入cdd则表示已经存在,否则视为不存在。

1、根据使用dwr的习惯先定义1个类,和1个方法,检查用户名是否存在:

image.png

这里的检查用户名是否存在,只看isUserExist方法。

2、配置声明该类

image.png

这里的id属性,代表此后台类,必须唯一。

3、编写客户端

客户端截图为:

image.png

源文件代码为:

<?xml version="1.0" encoding="utf-8"?>
<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" minWidth="955"
    minHeight="600" fontSize="16" fontFamily="中易宋体" width="1173">
    <s:layout>
        <s:BasicLayout>
        </s:BasicLayout>
    </s:layout>
    <fx:Script>
        <![CDATA[
   import mx.controls.Alert;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;
   protected function checkusername_clickHandler(event:MouseEvent):void
   {
    var user:String = username.text;
    if(user == ""){
     Alert.show("操作失败,用户名不能为空!","操作提示:");
     return;
    }
    resultMSG.text = "loading...";
    
    check.isUserExist(username.text);
   }
   
   protected function check_resultHandler(event:ResultEvent):void
   {
    
    //Alert.show("操作成功1" ,"title");
    var flag:String = String(event.result);
    if(flag=="true"){
     resultMSG.text = "该用户已存在!";
     resultMSG.setStyle("color","red");
    }else if(flag=="false"){
     resultMSG.text = "该用户可以使用!";
     resultMSG.setStyle("color","blue");
    }else{
     
     //Alert.show(typeof(event) + "","title");
     //返回数组
     var str:String = "";
     for(var i:int = 0;i<event.result.length;i++){
      str += event.result[i] + "\t";
     }
     Alert.show(str,"后台返回数组或集合的值为:");
    }
   }

   protected function check_faultHandler(event:FaultEvent):void
   {
    Alert.show("操作失败1" ,"title");
   }

   //JAava后台返回数组的数据
   protected function btn1_clickHandler(event:MouseEvent):void
   {
    check.getArrays();
   }

   //Java后台的返回ArrayList数据
   protected function btn2_clickHandler(event:MouseEvent):void
   {
    check.getArrayList();
   }
  ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        <s:RemoteObject id="check" destination="checkuser"
            fault="check_faultHandler(event)" result="check_resultHandler(event)">
        </s:RemoteObject>
    </fx:Declarations>
    <s:Panel width="471" height="209" x="132" y="54"
        title="用RemoteObject方式,简单的验证用户名是否存在" fontSize="17">
        <s:Label x="31" y="44" text="用户名:" width="72" height="26" />
        <s:TextInput x="112" y="40" id="username" />
        <s:Button x="123" y="93" label="确定" width="76" height="31"
            id="checkusername" click="checkusername_clickHandler(event)" />
        <s:Label x="26" y="132" text="注意:当用户名为cdd的时候为存在,否则为不存在" width="380"
            height="20" />
        <s:Label x="298" y="40" width="163" height="26" id="resultMSG" />
    </s:Panel>
    <s:Panel x="743" y="54" width="322" height="209" title="测试Java后台返回的数据"
        fontSize="16">
        <s:Button x="9" y="29" label="测试点击到后台返回数组" width="215" id="btn1"
            click="btn1_clickHandler(event)" />
        <s:Button x="10" y="87" label="测试点击到后台返回list集合" width="214" id="btn2"
            click="btn2_clickHandler(event)" />
    </s:Panel>
</s:Application>

 

点击确定按钮效果为:

image.png

存在的截图为:

image.png

不存在的截图为:

image.png

至于操作Java后台返回的数组的、集合的例子,可以看看上面的源文件。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区