技术开发 频道

Flex与Java中的Object交互

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

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

 
package com.cx.model;  
  
import java.io.Serializable;  
  
public class SpeakUser implements Serializable{  
          
    
private static final long serialVersionUID = -4154296753553491429L;  
  
    
private String userName;  
      
    
private String userPwd;  
      
    
private String userTel;  
      
    
private String userMail;  
  
    
public String getUserName() {  
        
return userName;  
    }  
  
    
public void setUserName(String userName) {  
        
this.userName = userName;  
    }  
  
    
public String getUserPwd() {  
        
return userPwd;  
    }  
  
    
public void setUserPwd(String userPwd) {  
        
this.userPwd = userPwd;  
    }  
  
    
public String getUserTel() {  
        
return userTel;  
    }  
  
    
public void setUserTel(String userTel) {  
        
this.userTel = userTel;  
    }  
  
    
public String getUserMail() {  
        
return userMail;  
    }  
  
    
public void setUserMail(String userMail) {  
        
this.userMail = userMail;  
    }  
  
}  

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

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

package com.cx.action;  
  
import com.cx.model.*;  
  
public class IntroduceOneself {  
  
    
public String speak(SpeakUser user){  
        System.out.println(
"Hello, My Name is: " + user.getUserName());  
        System.out.println(
"My telephone is: " + user.getUserTel());  
        System.out.println(
"My Email is: " + user.getUserMail());        
        
return "名字叫:" + user.getUserName() + ", 电话是: "  
                
+ user.getUserTel() + ", 邮箱是: "+user.getUserMail()  
                
+ "来访问您,请问您是否要接见?";  
    }  
}

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

package com.flex.model  
{  
      
    [Bindable]  
    [RemoteClass(alias
="com.cx.model.SpeakUser")]  
    
public class SpeakUser  
    {  
        
public var userName:String="";  
        
public var userPwd:String ="";  
        
public var userTel:String ="";  
        
public var userMail:String ="";  
                  
        
public function SpeakUser()  
        {  
              
        }  
    }  
}
0
相关文章