Flex与Java中的Object交互

Flex与Java中的Object进行交互,需要准备三个内容,一个是Flex主文件,也就是我们的mxml文件,两个Java类,一个remoting-config.xml。为了减少程序的复杂性,这里只证明Flex可以调用 Java中Object进行交互,不进行与数据库的交互。

新建一个Java实体类:SpeakUser.java, 如下:

 
 
 
  1. package com.cx.model; 
  2.  
  3. import java.io.Serializable; 
  4.  
  5. public class SpeakUser implements Serializable{ 
  6.          
  7.     private static final long serialVersionUID = -4154296753553491429L; 
  8.  
  9.     private String userName; 
  10.      
  11.     private String userPwd; 
  12.      
  13.     private String userTel; 
  14.      
  15.     private String userMail; 
  16.  
  17.     public String getUserName() { 
  18.         return userName; 
  19.     } 
  20.  
  21.     public void setUserName(String userName) { 
  22.         this.userName = userName; 
  23.     } 
  24.  
  25.     public String getUserPwd() { 
  26.         return userPwd; 
  27.     } 
  28.  
  29.     public void setUserPwd(String userPwd) { 
  30.         this.userPwd = userPwd; 
  31.     } 
  32.  
  33.     public String getUserTel() { 
  34.         return userTel; 
  35.     } 
  36.  
  37.     public void setUserTel(String userTel) { 
  38.         this.userTel = userTel; 
  39.     } 
  40.  
  41.     public String getUserMail() { 
  42.         return userMail; 
  43.     } 
  44.  
  45.     public void setUserMail(String userMail) { 
  46.         this.userMail = userMail; 
  47.     } 
  48.  

有的作者说这个实体类需要当做Java代码中方法的返回值传递给Flex中的AS代码,所以需要继承Serializable接口,否则将导致异常的发生。但是经过笔者测试,这个Serializable是可选的,即使不继承,也不会出现什么问题,可能是由于flex的版本所决定的吧。

再创建一Java对象:IntroduceOneself.java,供Flex调用, 类中 以SpeakUser作为参数。代码如下:

 
 
 
  1. package com.cx.action; 
  2.  
  3. import com.cx.model.*; 
  4.  
  5. public class IntroduceOneself { 
  6.  
  7.     public String speak(SpeakUser user){ 
  8.         System.out.println("Hello, My Name is: " + user.getUserName()); 
  9.         System.out.println("My telephone is: " + user.getUserTel()); 
  10.         System.out.println("My Email is: " + user.getUserMail());        
  11.         return "名字叫:" + user.getUserName() + ", 电话是: "  
  12.                 + user.getUserTel() + ", 邮箱是: "+user.getUserMail()  
  13.                 + "来访问您,请问您是否要接见?"; 
  14.     } 

然后创建一个ActionScript类:SpeakUser.as, 用于接受实体类SpeakUser.java的返回值,这里的[Bindable][RemoteClass]是和java代码中的 SpeakUser.java类关联起来。这样利用类型转换将java对象转换成AS对象。代码如下:

 
 
 
  1. package com.flex.model 
  2.      
  3.     [Bindable] 
  4.     [RemoteClass(alias="com.cx.model.SpeakUser")] 
  5.     public class SpeakUser 
  6.     { 
  7.         public var userName:String=""; 
  8.         public var userPwd:String =""; 
  9.         public var userTel:String =""; 
  10.         public var userMail:String =""; 
  11.                  
  12.         public function SpeakUser() 
  13.         { 
  14.              
  15.         } 
  16.     } 

修改Flex主文件:BlazObject.mxml,在其中调用java类,代码如下:

 
 
 
  1.  
  2.  
  3.      
  4.      
  5.         
  6.             import com.flex.model.SpeakUser; 
  7.              
  8.             import mx.controls.Alert; 
  9.             import mx.rpc.events.ResultEvent; 
  10.              
  11.             public function remotingHelloJavaFlex():void 
  12.             { 
  13.                  
  14.                 var user:SpeakUser = new SpeakUser(); 
  15.              
  16.                 user.userName = nameInputTxt.text; 
  17.                 user.userMail = txtUserMail.text; 
  18.                 user.userPwd = txtPwd.text; 
  19.                 user.userTel = txtTel.text; 
  20.                  
  21.                                  
  22.                 someOneCome.speak(user); 
  23.                 someOneCome.addEventListener(ResultEvent.RESULT,getRoHelloRes); 
  24.             } 
  25.              
  26.             private function getRoHelloRes(e:ResultEvent):void{ 
  27.                 Alert.show(e.result.toString()); 
  28.             } 
  29.              
  30.             private function failed():void{ 
  31.                 Alert.show("cuowu"); 
  32.             } 
  33.         ]]> 
  34.      
  35.      
  36.     
  37.                fontSize="12" width="209"/> 
  38.      
  39.      
  40.      
  41.      
  42.      
  43.      
  44.      
  45.      
  46.      
  47.      
  48.      
  49.  

在这里,Flex是通过AMF协议与Java对象进行交互的,其中endpoint定义了影射文件的消息协议,这个文件来自/WEB-INF/flex/services-config.xml中,影射对象的位置是通过remoting- service.xml影射的代码如下:

 
 
 
  1.  
  2.              
  3.              
  4.                 false 
  5.              
  6.          

remoting-service.xml

 
 
 
  1.  
  2.     class="flex.messaging.services.RemotingService"> 
  3.  
  4.      
  5.          
  6.      
  7.  
  8.      
  9.          
  10.      
  11.      
  12.      
  13.          
  14.              
  15.                 com.cx.action.IntroduceOneself 
  16.              
  17.          
  18.      
  19.      
  20.  

原文链接:http://blog.csdn.net/shehun1/article/details/6691462

【编辑推荐】

  1. Java 8整装待发 图谋云计算
  2. Java 7是蜜糖还是毒药?
  3. 选用Ibatis和Hibernate的区别
  4. JRuby和Java 7 我们可以期待什么
  5. Flex前端与Java服务端交互,反射机制挑大旗

分享题目:Flex与Java中的Object交互
网站网址:http://www.mswzjz.cn/qtweb/news34/311284.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能